Это последний элемент `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 элемент в документе во время его запуска. Остальная часть документа не должнаеще не загружен, верно?

Ответы на вопрос(3)

Ваш ответ на вопрос