如果您使用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参数重新加载页面。这些变得很棘手,因此将它们保存为最后的手段。

其他提示

例如,您可以将给定位置存储在持久变量中。在页面上,您必须检查当前位置是否已存储在此变量中。

如果不是,则设置变量并运行您的功能,如果是,则什么也不做。

如何存储持久变量: GM_SETVALUE

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top