我有一个简单的脚本,可在页面中创建跨度,其中包含Flash Player API获取的一些信息。我尝试了3种方法:
1)如果我没有加载脚本或使用以下脚本:(function(){...代码在这里...})();
这无法正确加载我的所有代码,尤其是播放器信息部分:
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种)?
1-代码在加载任何其他内容之前运行。当您尝试使用诸如document.getElementById之类的元素时,这些元素尚不存在,因此您的代码将找不到它。
2-您要替换window.onload函数。看起来该页面已经具有onload函数(负责加载注释..?),并且当您将另一个函数分配给它时,第一个函数将被替换并且不再运行。
3-您要添加事件监听器。一个页面中可以有多个事件侦听器,当事件发生时,所有事件侦听器都将执行(与之相对的window.onload,您只能执行一个函数)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句