2013-03-06 91 views
4

我为一个域做了一个greasemonkey脚本,现在如何让它只运行一次?就像每次访问域时开始的那样,我不希望这样。如何让它只运行一次,然后像删除它自己或使其本身不活动?如何只运行一次Greasemonkey脚本

谢谢。

+1

它的气味有害 – w35l3y 2013-03-06 16:28:54

+0

我希望我的访问者重定向到一个欢迎页面仅在第一次访问解释他的条件和隐私政策条款。我不希望他们在每次访问时都访问该页面。 :) – C0dez 2013-03-07 04:10:53

+2

所以你是页面的维护者。不需要使用Greasemonkey。 他们是否登录用户?将它添加到登录页面。 不是吗?不能准确,但可以使用cookies并将过期日期延迟至几年后 – w35l3y 2013-03-07 15:50:08

回答

1

重新定义功能在体内的最后一条语句:

function foo() 
{ 
... 
foo = function(){}; 
} 
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."); 
}