Odkazování na vlastní značku skriptu

Informace o document.currentScript byl přidán k tomuto příspěvku. document.currentScript by měla být považována za lepší možnost.

Jsou chvíle, kdy obsah externího skriptu může chtít odkazovat na svůj vlastní SCRIPT štítek. Někdy mohou vývojáři chtít zjistit atributy značky skriptu, které fungují jako volby pro skript; toto je praxe, kterou Dojo Toolkit provádí již léta. Zvýrazňovač syntaxe Prism od Lea Verou také používá tento postup:

<!-- Traditional Dojo config -->
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.8.3/dojo/dojo.js"
               data-dojo-config="async: true"></script>

<!-- Sample Prism config -->
<script src="prism.js" data-default-language="markup" data-manual></script>

Jak tedy tyto projekty získávají správný tag SCRIPT, pomocí kterého lze hledat atributy? Za předpokladu shora dolů (ne async) načtení skriptů, následující dostane skript vlastní značku:

/* From in side the script.... */

// Reliably grab my script tag
var script = document.getElementsByTagName("script");
script = script[script.length - 1];

// Check for an attribute/config
if(script.hasAttribute('data-something')) {
	// Do something!
}

Sbírejte SCRIPT prvky až do tohoto bodu a odkazujte na poslední – to je vše, co musíte udělat. Samozřejmě, že právě teď žijeme v převážně asynchronním světě, takže pro tyto případy možná budete muset nalepit ID na SCRIPT dejte šanci, že odpovídá SCRIPT podle cesty (opravdu špatný nápad)  nebo použijte jiný typ konfiguračního systému.

document.currentScript

A document.currentScript vlastnost také existuje a tato standardní vlastnost poskytuje maximální spolehlivou metodu detekce aktuálně spuštěného skriptu:

var script = document.currentScript;

Spárováním této metody se starším řešením by nejlepší kompletní řešení kódu mohlo být toto:

var script = document.currentScript || (function() {
    var scripts = document.getElementsByTagName("script");
    return scripts[scripts.length - 1];
})();