Document (rozszerzenie)#
document.currentScript#
Właściwość currentScript
zwraca dostęp do aktualnie wykonywanego elementu script
w danym dokumencie. Będzie tak jedynie w przypadku bezpośredniego przetwarzania instrukcji w skrypcie. Właściwość jest tylko do odczytu.
Jeśli instrukcja umieszczona zostanie w wywołaniu zwrotnym (np. w zdarzeniach lub funkcjach czasowych) zwracana będzie wartość null
. Kiedy obiekt document
jest tworzony wartość właściwości zawsze ustawiona zostaje na null
.
Prosty przykład:
<!DOCTYPE html>
<html>
<head>
<script>
document.write("Rezultat bezpośredni ze skryptu: " + document.currentScript); // [object HTMLScriptElement] odwołanie bezpośrednie ze skryptu
window.onload = function(){ // Odwołanie po załadnowaniu strony
document.getElementById('rezultat1').textContent+=(document.currentScript);
};
setTimeout(function(){ // Odwołanie po określonym czasie
document.getElementById('rezultat2').textContent+=(document.currentScript);
}, 1000);
</script>
</head>
<body>
<form>
<input type="button" value="Odpal zdarzenie" onclick="document.getElementById('rezultat3').textContent+=document.currentScript"></input>
</form>
<div id="rezultat1">Rezultat z window.onload: </div>
<div id="rezultat2">Rezultat z setTimeout: </div>
<div id="rezultat3">Rezultat z input.onclick: </div>
</body>
</html>
Polecenie jest specyficzne i z początku może wydawać się trudne do zrozumienia. W praktycznym aspekcie może przydać się do bezpośredniego odwołania do aktualnie wykonywanego skrypty przez sam skrypt, np. w celu pobrania jego kodu w postaci tekstowej i dalszej analizie (właściwości document.currentScript.textContent
lub document.currentScript.innerHTML
). Oczywiście w analogiczny sposób można odczytać wszystkie pozostałe właściwości przewidziane dla obiektu script
). Prosty przykład:
<script type="text/javascript">
var a = 5, b = 7;
var c = a + b;
document.write("Kod skryptu:");
document.write("<br><br>");
document.write(document.currentScript.textContent); // Wypisanie całego kodu skryptu
document.write("<br><br>");
document.write("Atrybut type skryptu: ");
document.write(document.currentScript.type); // text/javascript
</script>
Właściwość currentScript
pojawia się dopiero w specyfikacji HTML5.
Interfejs Web IDL#
readonly attribute HTMLScriptElement? currentScript;