如何从浏览器的JS控制台控制Tampermonkey脚本的功能?

时间:2013-10-09 12:36:19

标签: javascript console greasemonkey tampermonkey

我用这段代码写了一个Greasemonkey / Tampermonkey脚本:

var on = true;
function doSomething(){
   if(on){
      //do stuff
   }
}
setInterval(doSomething,1000);


通常该函数是活动的,但在少数情况下,我想从浏览器的javascript控制台中禁用它 我不想在网页上添加额外的切换按钮。

我怎样才能做到这一点?在控制台中输入on = true不起作用,因为on“未定义”。

1 个答案:

答案 0 :(得分:3)

Greasemonkey和Tampermonkey,operate in separate scopes from the target page, and may use a sandbox as well.

目标页面和JS控制台无法查看脚本范围中定义的变量和函数,但您的脚本可以将内容注入目标页面的范围。

因此,将on变量放在目标页面范围内,然后可以从控制台控制该功能。在这种情况下,请使用unsafeWindowDoc来执行此操作。

完整的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的原生用户脚本模拟。