在Chrome中的标题重定向后,Onreadystatechange无法正常工作

时间:2012-07-21 17:44:42

标签: javascript google-chrome userscripts onreadystatechange

我为一个调整图片大小的论坛制作了一个用户脚本。它的效果很好,除了在重定向后发布或编辑后,其中onreadystatechange不会在Google Chrome中触发。

查看帖子时,EG SomeSite / forums.php?action = viewtopic& topicid = 205362 ,用户脚本可以正常工作。

编辑/发布后,EG SomeSite / forums.php?action = viewtopic& topicid = 205362& page = p4976670#4976670 ,用户脚本不起作用。

问题出在这个代码上:

document.onreadystatechange = function () {
if (document.readyState == "complete") {
    //Call function
}};

我等待加载所有资源,因为在具有许多图像的页面上调整大小不一致。

该脚本在带有Greasemonkey的Firefox中完美运行。

知道为什么onreadystatechange在重定向后无法触发Chrome?有没有更好的方法等待资源被加载?

1 个答案:

答案 0 :(得分:0)

您没有说明是否使用@run-at参数,而是by default, Chrome userscripts are somewhat erratic about when they fire 这意味着有时候用户脚本会在onload事件之前触发,有时会触发(默认情况下)。如果是在onload事件之后,那么onreadystatechange将不会触发。

要适应此行为,请将// @run-at document-end添加到the metadata block,或将代码段替换为:

window.addEventListener ("load", YourMainFunction, false);
if (document.readyState == "complete") {
    YourMainFunction ();
}

function YourMainFunction {
    // DO ALL YOUR STUFF HERE...
}


在后一种情况下,YourMainFunction()将等待加载事件(与readyState == "complete"相同)或在事件已经过去时立即触发。 YourMainFunction()只会在任何一种情况下运行一次。