Динамическая вставка скрипта в DOM - PullRequest
0 голосов
/ 18 августа 2011

Я пытаюсь понять, почему этот код не работает, а вывод предупреждения просто пуст.

<script type="text/javascript">
(function() {
  ... 
  var s = document.getElementsByTagName('script')[0]; alert(s.innerHTML);       
  s.parentNode.insertBefore(res, s);
  ... 
})();
</script>

Он должен добавить res перед s если я не ошибаюсь.Это то, что мне особенно нужно, так как я пытался добавить его в тело, и оно было успешно добавлено (после этого, хотя мне нужно запустить некоторый код внутри этой функции, поэтому, если скрипт не загружен до его, такойкод будет ошибкой).

Эта функция должна запускаться при загрузке документа или это проблема?В частности, функция getElementsByTagName , похоже, ничего не возвращает.

Спасибо всем.

1 Ответ

0 голосов
/ 18 августа 2011

Вы не можете запустить этот тип кода до загрузки документа. Этот код должен быть загружен, прежде чем он может быть запущен (см. Круговой аргумент здесь). И, к тому времени, большая часть остальной части документа была загружена. Вы можете динамически загружать скрипты ПОСЛЕ того, как документ был загружен. Если вам нужен сценарий, загруженный перед другими сценариями, то вы должны либо поместить их все в документ статически в том порядке, в котором вы хотите их запустить, либо добавить их все динамически в том порядке, в котором они вам нужны, и вы необходимо отслеживать завершение одной загрузки перед загрузкой следующей.

Если вы хотите описать более широкую проблему, которую вы пытаетесь решить, мы, вероятно, можем предложить более элегантное решение, чем то, что вы преследуете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...