2012-05-11 2 views
3

Я пытаюсь динамически вставлять некоторые js в элемент DOM для выполнения. Однако, если я добавляю в $(document).ready(), сценарий не оценивается (но вводится правильно). Кроме того, если я пытаюсь вставлять, поскольку DOM загружается, элемент контейнера еще не существует. Я тестировал жестко кодирование тегов сценария в контейнере, и это отлично работает. Есть ли способ вставить js в элемент DOM и оценить его в DOM или при загрузке страницы?Inject Javascript в DOM

$(document).ready(function(){ 
    var container = document.getElementById('container_div'); 
    var script = document.createElement('script'); 
    script.type = 'text/javascript'; 
    script.appendChild(document.createTextNode('[script]')); 
    container.appendChild(script); 
    //I've also tried .insertBefore and 
    //.parentNode.insertBefore and jQuery's .append() 
}); 

Является ли то, что я пытаюсь сделать возможным?

+1

Код работает для меня, за исключением того, что '' [script] '' выдает ошибку, потому что 'script' не определен. http://jsfiddle.net/T74Df/ – Yoshi

+0

Он вставляет скрипт, но он никогда не оценивается. – Joe

+0

То, что вы делаете, это то же, что и 'eval', что является« злым ». вместо этого лучше обратиться к файлу скрипта, установив 'script.src = 'путь/в/script.js';'. – zzzzBov

ответ

1

В чистом JavaScript:

var s = document.createElement('script'); 
s.setAttribute('src','js/myscript.js'); 
document.body.appendChild(s); 

Это из jQuerify я использую его, чтобы «импорт» JQuery на любую страницу, так что я могу взломать на него поджигатель, но он должен работать с любым сценарием.

Смежные вопросы