当一个标签I've打开时已加载防油键

How do I find out when a tab I've opened with greasemonkey is loaded?

本文关键字:ve 加载 一个 标签      更新时间:2023-09-26

我正在编写一个防油精脚本,以浏览链接列表并在新选项卡中打开它们(对所有链接都重复使用相同的新选项卡),但我不知道如何等到页面加载后再加载下一个链接。。。我试图添加到新选项卡的任何eventListener都会给我一个拒绝权限的错误。。。如何检查新选项卡是否已完全加载(或者至少已加载到足以让服务器处理请求的程度)?我尝试了unsafeWindow,但也得到了一个否认的错误(我可能不完全理解它的用途…)

举个例子。。。这是我尝试过的多种方法之一。。。

mywin.addEventListener(DOMContentLoaded, false);

还有一个(我不记得我还试过什么了,因为我在它们不起作用的时候删除了它们)。。。。。。。。

mywin.unsafeWindow.setTimeout(1000);

我不确定我为什么要在"mywin"上设置超时,所以我要尝试在主窗口上设置它,但即使这有效,我仍然想知道检查新选项卡状态的正确方法。

谢谢!!!

编辑:我确实设法让setTimeout正常工作,但这不是最好的方法,因为设置太低意味着它们在慢速连接时不会加载,而设置太高意味着在快速连接时会出现严重延迟。

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

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

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检查响应是否可能对此有效?如果是,我该怎么做?

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

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

允许我使用以下代码来检测加载,并只有在加载到足以满足我的目的后才关闭选项卡!(尽管上面代码的"窗口标题"部分似乎没有任何作用…)

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