我为一个调整图片大小的论坛制作了一个用户脚本。它的效果很好,除了在重定向后发布或编辑后,其中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?有没有更好的方法等待资源被加载?
答案 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()
只会在任何一种情况下运行一次。