在Greasemonkey脚本中为每个域使用不同的变量

时间:2014-12-09 01:34:11

标签: greasemonkey tampermonkey

我有一个Greasemonkey脚本,它使用GM_setValue()将数字ID列表保存为分隔字符串。该脚本使用此列表过滤掉公告板上的项目。

我试图弄清楚使这个脚本适用于多个域的最佳方法,因此每个域都有自己的ID列表。现在,如果我过滤ID" 12345"在一个网站上,它也将在每个其他网站上过滤。

我意识到我可以将域附加到每个ID并搜索ID +域的组合,但我更喜欢节省空间,除非它是我唯一的选择。理想情况下,我为每个域都有一个单独的变量。

1 个答案:

答案 0 :(得分:0)

您可以使用location.hostname获取域名,然后生成一个用于GM_setValueGM_getValue的密钥。之后,其余代码都是一样的。

例如:

// ==UserScript==
// @name     _Store and retrieve a comman var that's unique to each domain
// @include  http://DOMAIN_1.COM/YOUR_PATH/*
// @include  http://DOMAIN_2.COM/YOUR_PATH/*
// @include  http://DOMAIN_3.COM/YOUR_PATH/*
// @grant    GM_getValue
// @grant    GM_setValue
// ==/UserScript==
var storageKey  = "IDs_" + location.hostname;
var idList      = GM_getValue (storageKey, "");

console.log ("This site's list was: ", idList);

idList         += ",7";

GM_setValue (storageKey, idList);


这会为您访问的每个域保留一个单独的idList(与@ include,@ match和@exclude指令匹配)。