2013-10-09 68 views
1

我寫了一個Greasemonkey的/ Tampermonkey腳本使用此代碼:如何從瀏覽器的JS控制檯控制Tampermonkey腳本的功能?

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


一般情況下,功能活躍,但對於某些少數情況下,我想在瀏覽器中的JavaScript控制檯中禁用它。
我不想在網頁上添加額外的切換按鈕。

我該如何做到這一點?在控制檯中輸入on = true不起作用,因爲on是「未定義」。

+0

不確定你想在這裏做什麼,但是你可以在腳本中添加一行:「debugger;」。當你使用谷歌瀏覽器工具(F12)時,你可以刷新網頁,腳本將停在你有該線的地方。然後你可以在頁面上打開JS控制檯和腳本「live」。 – patchie

回答

2

的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原生userscript仿真運行。

+0

謝謝,這個工程! – JHnet

+0

不客氣,樂意效勞。 –

相關問題