アロハ。私はスクリプトに取り組んでおり、問題の各構成要素のドキュメントを理解していますが (SO に関する他の多くの質問を調べました)、実際にはこの特定の動作を理解していません。次のコードは、特定の問題を分離するための省略されたサブセットであることに注意してください。ここにあるasync.html
:
<!doctype html>
<html><head><script type="text/javascript" src="asyncTest.js" async="true"></script></head>
<body><ul id="menu"><li>one</li><li>two</li><li>three</li></ul></body></html>
そしてここにあるasyncTest.js
:
var _site = function() {
var load = function() {
var menuCategory = document.getElementById('menu').getElementsByTagName('li');
for(var i=0; i<menuCategory.length; i++) { alert(i+'['+menuCategory[i]+']'); }
};
return { load:load };
}();
window.addEventListener('load',_site.load(),false);
問題はasync
、タグに属性がないと、DOM がロードされる前に実行されたかのように、このコードが要素を に<script>
適切に格納しないことです ( 「オブジェクト」全体がロードされた後に起動する必要があると思っていましたが)。全体がロードされた後にのみこれを試して実行するために を使用しているので、それは奇妙だと思います(そして、Chromium、FF、および Opera では適切なタイミングで実行されるように見えます-少なくとも「適切と思われるもの」時間")。どちらかといえば、逆がこの動作を引き起こすと思います。<li>
menuCategory
window
addEventListener()
できれば古いアインシュタインを使用して、誰かがこれを説明できますか? 私は明らかに私の読書に何かが欠けています。ありがとう!