我写了一个关于GM_xmlhttpRequest的greasemonkey脚本 到谷歌结果页面的下两页..即如果我当前 页面是1然后我的脚本将执行GM_xmlhttpRequest到页面2和 3 ..
现在我的脚本将从这3页中提取出所有网址 将重新排序
为此我做了
unsafeWindow.addEventListener('load',Reorder,true);
function Reorder()
{
alert("onload fired")
..........
..........
// some code overhere to collect all the urls into an array
// and to reorder the urls in the array
//现在我将这些网址注入我的参考页面,即我保留了一个 引用我应该将这些URL附加到的节点 childNodes ..以及我修改链接到页面号。 2和 3(在结果页面的底部)现在他们将指向我新近动态生成的这些 页面。为此我修改了这些链接的onclick属性 在当前窗口中打开一个新窗口并将其写入 修改了responseXML对象到新创建的窗口。
现在一切都很棒,即网址 提取,重新排序,创建新窗口,编写responseXML 对象..
但问题是当我点击这些修改后的链接时 我新生成的窗口替换了父窗口,它没有给出“onload fired”的警告 ...实际上它不会停止加载,即它显示所需的 内容但从未完全加载,因为状态栏不显示 “完成”实际上它显示“等待clients1.google.com”......
所以有人知道到底出了什么问题......它应该到期 以某种方式在谷歌搜索页面上运行的某些脚本 与页面内容同步...
基本上对于那些不知道greasemonkey如何工作的人.....我的代码只是删除所有包含url的锚标签并插入带有不同网址的类似锚标签...简而言之,问题是我是只是创建一个新窗口并执行document.write(这个新创建的html页面)...除了网址之外我没有改变任何东西.... 所以脚本基本上是以某种方式与页面上的url同步,或者只要主体包含相同的DOM树,脚本中包含哪些数据真的很重要
请别人知道或了解它。请告诉我......
我需要快速完成这件事......
答案 0 :(得分:1)
当您使用document.write
将内容写入新页面时,您需要使用document.close()
告诉浏览器您已完成 - 直到那时,浏览器认为还有更多内容要发布并继续显示加载图标。