我有一個DOMContentLoaded
事件的腳本handler-未調用DOMContentLoaded或加載事件處理程序的異步加載腳本?
document.addEventListener('DOMContentLoaded', function() {
console.log('Hi');
});
我敢加載asynchronously-
<script async src=script.js></script>
然而,事件處理程序從不叫。如果我同步加載它 -
<script src=script.js></script>
它工作正常。
(即使我改變DOMContentLoaded
事件爲load
事件,它永遠不會被調用。)
是怎麼回事?無論腳本如何由瀏覽器加載,都應該註冊事件處理程序,不是嗎?
編輯:它無法在Chrome 18.0.1025.11測試工作,但與DOMContentLoaded
,它確實在Firefox 11 Beta版(但load
事實並非如此)。去搞清楚。
OH很棒的JAVASCRIPT和DOM,我的方式錯誤顯示錯誤!
通過asynchrounously加載腳本,你告訴它可以獨立加載頁面的其他部分的該腳本的瀏覽器。這意味着頁面可能會完成加載,並可能在加載腳本之前和註冊事件之前觸發DOMContentLoaded。如果發生這種情況,您將錯過該事件(在您註冊時已發生)。 – jfriend00 2012-02-11 01:44:26
Oh-interedasting。所以我真的應該測試已經解僱的事件 - (**編輯**:實際上,因爲我在腳本之後依賴事件觸發,所以它不應該是異步的)。涼。把它寫成一個答案,你可以有一個upvote :) – user1203233 2012-02-11 01:47:01