2012-03-02 2 views
1

Я пытаюсь добавить скрипт в dom с помощью insertBefore.Динамическое добавление тега скрипта на страницу

При запуске команд через консоль сценарий выполняется, как ожидалось, но когда один и тот же фрагмент кода запускается через код, он отказывается выполнять.

Это код, который я использую.

var el = document.getElementsByTagName('div')[0]; 
var s = document.createElement('script'); 
s.text = 'alert("abc");' 
el.parentNode.insertBefore(s, el.nextSibling) 



el.parentNode.replaceChild(s.childNodes[0], el); 
el = s.childNodes[0]; 
for(var i = s.childNodes.length - 1; i >= 0 ; i--) 
    el.parentNode.insertBefore(s.childNodes[i], el.nextSibling); 

Это добавляет скрипт в DOM, но не выполняет it.a

+0

Вы используете код перед тем, как DOM готов? –

+0

попробуйте добавить скрипт в нижней части документа, прямо перед закрытием тег – Liviu

ответ

0

Я не в состоянии повторить свой вопрос:

http://jsfiddle.net/treeface/8F8bK/

Вы уверены, что ваш код запускается после полной загрузки DOM? Если вы, вероятно, не хотите запускать этот код следующим образом:

window.onload = function() { 
    var el = document.getElementsByTagName('div')[0]; 
    var s = document.createElement('script'); 
    s.text = 'alert("abc");' 
    el.parentNode.insertBefore(s, el.nextSibling) 
}; 
+0

Привет, да, код запускается после того, как DOM готов. Я разрешаю пользователю изменять свой HTML в самом браузере. Вход динамически добавляется в dom. Я добавлю несколько примеров кода, чтобы сделать их более ясными. – Amit