2014-02-21 15 views
0

我正在創建一個函數alerts()並在我的腳本標記中調用它,即<head> Actully currenty我在現場編輯器上工作,所以我必須把用戶代碼在頭部,通常所有的函數調用在頭部,但在這裏,它顯示錯誤! 我想要保存用戶代碼並在DOM完成時運行! 喜歡:如何保存被調用的函數,直到document.body不返回完成

HTML

<head> 
    <script src='alertResource.js' type ='text/javascript' ></script> 

     <script> 

      alerts(); 

     <script> 

    </head> 

alertResource.js

function alerts(msg) { 
    var _M_DoWn = { x: '', y: '', isdown: '' }; 
    var _A = document.createElement('HTML_alert'); 
    _A.id = "codeit_HTML_alert"; 

    insertAfter(document.body, _A); 

} 

    function insertAfter(refrNode, newNode) { 
    refrNode.parentNode.insertBefore(newNode, refrNode.nextSibling); 
    } 

所以,每當我打電話alerts()它顯示在我的控制檯錯誤:

錯誤

遺漏的類型錯誤:無法讀取空

的特性「parentNode」我猜出現錯誤,因爲DOM被加載在我的函數被調用。現在我想做一些事情:延遲任何函數調用,直到DOM準備就緒。根據我的情況,我知道如何檢查readystate,但無法執行它。

有什麼想法?我需要做什麼來實現這一目標?

+0

您還可以使用 $(文件)。就緒(函數(){ //代碼 }); – Akhlesh

+0

我還用了什麼? @Akh –

+0

對不起,我寫了 – Akhlesh

回答

1

調用頁面後,你的功能是完全通過使用此加載:

使用JavaScriopt

document.addEventListener('DOMContentLoaded', function() { 
    alerts(); 
}, false); 


使用 JQuery

$(function(){ 
    alerts(); 
}); 
+0

JavaScript中的任何類似的解決方案? –

+0

@AshishMishra瞭解jQuery如何實現它,g:http://stackoverflow.com/a/800010/1414562 –

+2

最好的方法是添加javascript代碼或引用html的底部即ie中的最後一個代碼 – Akhlesh

0

請使用。 (Javascript方式)

window.onload=function(){SomeJavaScriptCode}; 
<body onload="SomeJavaScriptCode"> 
1

當您調用「alerts」時,文檔未完全加載,「refrNode.parentNode」返回null。

試試這個,沒有jQuery的

<body onLoad="alerts();"> 
.... 
</body> 
0

根據,如果你需要支持IE8或不上,你可以這樣做:

document.addEventListener('DOMContentLoaded', function(){ 
    alerts(); 
}); 
相關問題