每页加载一次只能运行GreaseMonKey脚本一次?
-
10-10-2019 - |
题
如果您使用GreaseMonKey脚本 @include *
然后访问像YouTube这样的网站,每次刷新时都会运行20次以上的脚本。这是在Firefox上,不确定Chrome。
有没有办法防止这种情况?
解决方案
首先,您可能不希望脚本在iFrames中运行。
您可以使用 这 @noframes
指示 截至2014年10月,现在可以在Greasemonkey和Tampermonkey工作。
对于较旧版本,或不支持的脚本引擎 @noframes
, ,您可以在元数据块之后使用此代码:
if (window.top != window.self) //don't run on frames or iframes
{
//Optional: GM_log ('In frame');
return;
}
其次,您可以在页面加载上等待并发射GM代码。将所有内容包裹在一个 main()
并在 load
事件,像这样:
window.addEventListener ("load", LocalMain, false);
function LocalMain () {
// Your code goes here.
}
第三,您可以通过添加来排除站点或页面 // @exclude
指令到元数据块。
总的来说,最好避免普遍包含的GM脚本。
其他方法可能会设置标志或使用URL参数重新加载页面。这些变得很棘手,因此将它们保存为最后的手段。
其他提示
不隶属于 StackOverflow