如何找到我用greasemonkey打开的标签何时加载?

时间:2013-07-17 12:56:49

标签: javascript xmlhttprequest greasemonkey

我正在编写一个greasemonkey脚本来浏览一个链接列表并在一个新选项卡中打开它们(为所有这些选项重复使用相同的新选项卡),但我无法弄清楚如何等到页面有加载以加载下一个链接...任何eventListener我尝试添加到新选项卡给我一个权限被拒绝错误...我如何检查新选项卡是否已完全加载(或至少加载足够的服务器将具有处理请求)或不?我尝试了unsafeWindow,但也有一个被拒绝的错误(我可能不完全理解使用虽然...)

作为一个例子......这是我尝试过的多件事之一......

mywin.addEventListener(DOMContentLoaded, false);

还有一个(我不记得我尝试了什么,因为当他们不工作时我删除了它们)........

mywin.unsafeWindow.setTimeout(1000);

我不知道为什么我试图在'mywin'上设置超时,所以我要尝试在主窗口上设置它,但即使这样可行,我仍然想知道正确的方法检查新标签的状态。

感谢!!!

编辑:我确实设法让setTimeout工作,但这不是最好的方法,因为设置太低意味着他们没有加载慢连接,而设置太高意味着更快的主要延迟连接。

所以我还在寻找更好的方法!

编辑:不应该(但可能)属于跨站点/跨域脚本,因为所有链接都在同一个站点上...

starting with 
http://www.aywas.com/message/notices/

the links being opened are like these
http://www.aywas.com/message/notices/9767066/
http://www.aywas.com/message/notices/9765913/
http://www.aywas.com/message/notices/9765644/

编辑: GM_xmlhttpRequest或http-on-examine-response可能会对此有用吗?如果是这样,我该怎么做?

1 个答案:

答案 0 :(得分:0)

我找到了解决这个问题的方法......奇怪的是,在使用GM_openInTab创建窗口时我无法做到这一点,但使用

mywin2=window.open("http://www.aywas.com/message/notices/9801049/", "my_win2");

允许我使用以下代码来检测加载并仅在加载足够用于我的目的后关闭选项卡! (虽然上面代码的'窗口标题'位似乎没有做任何事......)

mywin2.addEventListener('load', function() {
  mywin2.close()
}, false);