被欺骗的候选人是以前的 GM 版本。问题可能出在用户脚本可以运行的不同范围内,如此处所述。但是,如此处所述,Greasemonkey 4.0 目前没有记录此功能。
我有这个 Greasemonkey 演示脚本:
// ==UserScript==
// @name GM_getValue, GM_setValue don't work demo
// @version 0.2
// @author You
// @include /^https:\/\/stackoverflow.com/$/
// @grant GM_getValue
// @grant GM_setValue
// @run-at document-end
// ==/UserScript==
console.log('script started');
var id = GM_getValue('testName', 0);
console.log('got ' + id);
id++;
GM_setValue('testName', id);
用https://stackoverflow.com/调用它,很明显它被调用了。
但是,我在控制台上收到此错误:
Script error:
ReferenceError: GM_getValue is not defined
Stack trace:
userScript@user-script:demosrv/GM_getValue%2C%20GM_setValue%20don%27t%20work%20demo:372:5
scopeWrapper@user-script:demosrv/GM_getValue%2C%20GM_setValue%20don%27t%20work%20demo:381:9
@user-script:demosrv/GM_getValue%2C%20GM_setValue%20don%27t%20work%20demo:361:17
我已经挖掘了很多文档,但似乎GM_{get,set}Value
根本不想存在。
为什么会这样?如何让它工作?
我正在使用火狐。