0

我为一个调整图像大小的论坛制作了一个用户脚本。它工作得很好,除了在发布或编辑它重定向的地方之后,onreadystatechange在谷歌浏览器中不会触发的地方。

查看线程时,例如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 上触发吗?有没有更好的方法来等待资源被加载?

4

1 回答 1

0

您没有说明是否使用该@run-at参数,但默认情况下,Chrome 用户脚本在触发时有些不稳定
这意味着有时用户脚本会在onload事件之前触发,有时会在事件之后触发(默认情况下)。如果是在onload事件之后,则onreadystatechange不会触发。

要适应此行为,请添加// @run-at document-end元数据块,或将该代码片段替换为:

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

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


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

于 2012-07-22T00:54:17.540 回答