2

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

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


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

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

4

1 回答 1

4

Greasemonkey 和 Tampermonkey在与目标页面不同的范围内运行,也可以使用沙箱。

目标页面和 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 的本机用户脚本模拟。

于 2013-10-10T06:20:50.350 回答