我用这段代码写了一个Greasemonkey / Tampermonkey脚本:
var on = true;
function doSomething(){
if(on){
//do stuff
}
}
setInterval(doSomething,1000);
通常该函数是活动的,但在少数情况下,我想从浏览器的javascript控制台中禁用它
我不想在网页上添加额外的切换按钮。
我怎样才能做到这一点?在控制台中输入on = true
不起作用,因为on
“未定义”。
答案 0 :(得分:3)
Greasemonkey和Tampermonkey,operate in separate scopes from the target page, and may use a sandbox as well.
目标页面和JS控制台无法查看脚本范围中定义的变量和函数,但您的脚本可以将内容注入目标页面的范围。
因此,将on
变量放在目标页面范围内,然后可以从控制台控制该功能。在这种情况下,请使用unsafeWindow
Doc来执行此操作。
完整的Greasemonkey和Tampermonkey脚本就是:
// ==UserScript==
// @name _Allow console control of Tampermonkey function
// @include http://YOUR_SERVER.COM/YOUR_PATH/*
// @grant unsafeWindow
// ==/UserScript==
unsafeWindow.on = true;
function doSomething () {
if (unsafeWindow.on){
//do stuff
}
}
setInterval (doSomething, 1000);
在控制台中,省略unsafeWindow
。也就是说,你会使用:
on = false;
// OR
on = true;
停止并启动该脚本的操作。
请注意,在Chrome中,脚本必须在Tampermonkey中运行,而不是Chrome的原生用户脚本模拟。