私はDOMContentLoadedを持つ非同期ロードされたスクリプト、またはロードされているイベントハンドラが呼び出されていないか?
<script async src=script.js></script>
asynchronously-ロードしていますhandler-
document.addEventListener('DOMContentLoaded', function() {
console.log('Hi');
});
がしかし、イベントハンドラはと呼ばれることはありませんDOMContentLoaded
イベントにスクリプトを持っています。同期してロードする場合 -
<script src=script.js></script>
正常に動作します。
(私はload
イベントにDOMContentLoaded
イベントを変更しても、それが呼び出されることはありませんです。)
できますか?イベントハンドラは、スクリプトがブラウザによってどのようにロードされるかにかかわらず登録されるべきですか?
編集:それはクローム18.0.1025.11ベータ版では動作しませんが、DOMContentLoaded
と、それは、Firefox 11ベータ版にを行います(ただし、load
とそうでありません)。 Go figure。 JavaScriptとDOMの
OH GREAT LORDSは、PRAY MY WAYS OF ERRORを表示します!
非同期でスクリプトをロードすることにより、あなたはそれがページの他の部分から独立してそのスクリプトを読み込むことができ、ブラウザを語っています。これは、ページが読み込みを終了し、スクリプトがロードされる前とイベントの登録前にDOMContentLoadedが発生する可能性があることを意味します。それが起これば、あなたはイベントを逃すでしょう(あなたがそれを登録するときにはすでに起こっています)。 – jfriend00
ああinteredasting。だから私はすでにイベントをテストしているはずです - ** ** edit **:実際には、スクリプトの後にイベントを発生させるので、非同期ではありません。クール。答えとして書くとアップヴォートを持つことができます:) – user1203233