5

我为域制作了一个greasemonkey 脚本,现在如何让它只运行一次?就像每次访问域时都会启动一样,我不希望这样。我如何让它只运行一次,然后像删除自己或使自己处于非活动状态?

谢谢。

4

2 回答 2

5

如果您希望脚本(或脚本的一部分)只运行一次,那么您需要在非易失性存储中存储一个标志。脚本不能自行删除或自行关闭。但它可以立即退出,而不是运行任何其他代码。

要逐个站点(域)存储内容,请使用localStorage。要在脚本+命名空间的基础上存储东西,请使用GM_setValue。这是一个基本脚本:

// ==UserScript==
// @name        _Run a GM script one-time only
// @namespace   _pc
// @include     http://YOUR_SERVER.COM/YOUR_PATH/*
// @grant       GM_getValue
// @grant       GM_setValue
// ==/UserScript==

var alreadyRun = GM_getValue ("alreadyRun",  false);

if ( ! alreadyRun) {
    GM_setValue ("alreadyRun", true);
    alert ("This part of the script will run exactly once per install.");
}
于 2013-04-17T01:01:38.930 回答
1

将函数重新定义为主体中的最后一条语句:

function foo()
 {
 ...
 foo = function(){};
 }
于 2013-04-06T05:32:49.583 回答