2012-05-11 31 views
3

我正在嘗試動態注入一些js到DOM元素中執行。但是,如果我在$(document).ready()處注入,則不會評估腳本(但會正確注入)。另外,如果我嘗試在DOM加載時進行注入,那麼容器元素還不存在。我通過在容器內對腳本標記進行硬編碼進行了測試,這非常有效。有沒有辦法將js注入到DOM元素中,並在DOM準備好或頁面加載時進行評估?將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'是'evil'一樣的東西。相反,最好通過設置script.src ='path/to/script.js'來引用腳本文件;'。 – zzzzBov

回答

1

在純javascript:

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

這是jQuerify我用它來「進口」了jQuery任何網頁這樣我就可以破解它與螢火蟲,但它應該與任何腳本工作。