Я делаю это с этим кодом ...
// This is for Firefox only at the moment.
var thisScriptElement = document.currentScript,
// Generic `a` element for exploiting its ability to return `pathname`.
a = document.createElement('a');
if ( ! thisScriptElement) {
// Iterate backwards, to look for our script.
var scriptElements = document.body.getElementsByTagName('script'),
i = scriptElements.length;
while (i--) {
if ( ! scriptElements[i].src) {
continue;
}
a.href = scriptElements[i].src;
if (a.pathname.replace(/^.*\//, '') == 'name-of-your-js-code.js') {
thisScriptElement = scriptElements[i];
break;
}
}
}
Затем, чтобы добавить свой элемент, это просто как ...
currentScript.parentNode.insertBefore(newElement, currentScript);
Я просто добавляю элемент script
в любом месте (и несколько раз, если необходимо) в элемент body
, чтобы включить его ...
<script type="text/javascript" src="somewhere/name-of-your-js-code.js?"></script>
Убедитесь, что код работает как есть, не в DOM ready или window
load
событие.
По сути, сначала мы проверяем document.currentScript
, который является только Firefox, но все еще полезным (если он стандартизируется и / или другие браузеры реализуют его, он должен быть наиболее надежным и быстрым).
Затем я создаю общий элемент a
для использования некоторых его функций, таких как извлечение path части href
.
Затем я перебираю элементы script
в обратном направлении (потому что в порядке разбора последний script
элемент должен быть текущим script
), сравнивая имя файла с тем, которое, как мы знаем, называется нашим. Вы можете пропустить это, но я делаю это, чтобы быть в безопасности.