不同的加载脚本与greasemonkey给出不同的行为在youtube

different onload script with greasemonkey give different behaviour in youtube

本文关键字:youtube greasemonkey 加载 脚本      更新时间:2023-09-26

我有一个简单的脚本,创建一个跨度的页面与一些信息采取的flash播放器API。我试了三种方法:

1)如果我把脚本没有onload或带:(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的评论…

最后我试了:

window.addEventListener("load", function(e) { ...code here... }, false);

加载所有正确的代码和注释。

为什么有这3种不同的行为(尤其是2)?

1 -代码在加载任何其他内容之前运行。当你尝试文档之类的东西时。getElementById,元素还不存在,所以你的代码找不到它。

2 -你在换窗户。onload函数。看起来页面已经有一个onload函数(负责加载评论…?),当你给它赋值另一个函数时,第一个函数将被替换,不再运行。

3 -您正在添加事件侦听器。在一个页面中可以有多个事件侦听器,当事件发生时,所有的事件侦听器都将执行(与窗口侦听器相比)。