Это последний элемент `script` текущего запущенного скрипта?
Можно ли предположить, что последнийscript
элемент * в документе при запуске скрипта ** это запущенный скрипт?
Например, я хочу создать скрипт, который можно удалить в любом месте тела страницы и отобразить элемент в том же месте. Я'Я делаю что-то вроде этого:
function getCurrentScriptElement() {
var scripts = document.getElementsByTagName('script');
return scripts[scripts.length - 1];
}
var script = getCurrentScriptElement();
var view = document.createElement('span');
/* Put stuff in our view... */
script.parentNode.insertBefore(view, script);
Предполагая, что скрипт находится в теле документа, это "безопасный?" Будет лиgetCurrentScriptElement
функция всегда возвращает запущенный скрипт? Если нет, то как это сделать?
Я хотел бы сделать это, не привязывая скрипт к определенному атрибуту id или подобному.Мне бы хотелось, чтобы это было просто позиционным.
Я создал примерВот что тянет вэтот скрипт, В одном ответе предполагалось, что другие сценарии могут создать условие, при котором пример, подобный этому, будет нарушен. Можно ли добавить в этот пример другие сценарии, которые его сломают?
Было предложено, чтобы другие сценарии сdefer
или жеasync
атрибуты могут сломать это. Кто-нибудь может привести пример того, как такой скрипт может работать?
Как я понимаю,defer
означает сначала загрузить DOM, а затем запустить скрипт сdefer
тег. Как быdefer
атрибут, появляющийся в другом элементе скрипта, влияет на поведение?getCurrentScriptElement
async
Насколько я понимаю, это означает, что нужно начинать извлекать этот сценарий и продолжать анализировать DOM одновременно,не жди ... но когда он ударяетмой сценарий все равно должен остановиться и подождать, верно?
Я нене вижу, как кто-то может повлиять на это, кто-нибудь может привести пример?
* Яm интересуются только внешними скриптами для целей этого вопроса.
** не последнийscript
элемент во всем документе, но последнийscript
элемент в документе во время его запуска. Остальная часть документа не должнаеще не загружен, верно?