我有一个简单的脚本,可以在页面中创建一个带有flash player API的信息。 我试过三种方法:
1)如果我把脚本没有onload或者: (function(){... code here ...})();
这并没有正确加载我的所有代码,尤其是播放器信息部分:
var spanSound=document.createElement('span');
Fls_div.appendChild(spanSound);
spanSound.appendChild(document.createTextNode(" audioLev:")); // --OK--
var player = window.document.getElementById('movie_player');
var spanQual= document.createElement('span');
spanQual.appendChild(document.createTextNode("-->" + player.getPlaybackQuality() )); // --NO--
但是所有youtube的评论都已加载。
2)我将所有代码放入:
window.onload = function(){ ...code here... }
这会正确加载我的所有代码,但它不会加载youtube的评论......
3)最后我尝试了:
window.addEventListener("load", function(e) { ...code here... }, false);
这会加载所有正确的代码和注释。
为什么这3种不同的行为(特别是2))?
答案 0 :(得分:2)
1 - 代码在加载任何其他内容之前运行。当你尝试像document.getElementById这样的东西时,元素还不存在,所以你的代码找不到它。
2 - 您正在替换window.onload函数。看起来页面已经有一个onload函数(负责加载注释......?),当你为它设置另一个函数时,第一个函数将被替换,不再运行。
3 - 您正在添加一个事件监听器。您可以在页面中拥有多个事件侦听器,当事件发生时,所有事件侦听器都将执行(与window.onload相比,您只能执行一个函数)。