2011-01-09 21 views

回答

2

假設你有一個鍍鉻userscript與此代碼:

var userscriptVar = "I'm a global variable, userscript context."; 
window.var2  = "I'm a window.scope variable, userscript context."; 

console.log ("Hello from the userscript."); 


要訪問這些userscript變量:

  1. 確定userscript的ID。你可以看到它的擴展頁面上(chrome://extensions/):

    Getting script's ID

  2. 切換到腳本的上下文中通過單擊快捷菜單上的控制檯底部:

    Switch to userscript scope

    注該id(pfnbaeafniclcjhfkndoploalomdmgkc)與擴展頁面上列出的相同。

  3. 現在您將立即可以看到並更改窗口範圍變量(var2),但由於腳本實例早已完成並消失,因此無法看到userscript的全局(userscriptVar)。 :

    Accessing Script vars after script is done

  4. 訪問和更改userscript變量,而腳本仍處於活動狀態,設定在腳本中的斷點,並使用調試器。見this answer如何做到這一點。

    (Click for a larger image)
    Userscript paused at a breakpoint

  5. 隨着userscript停在一個合適的斷點,你可以看到,但無法改變全局值,從控制檯。

    (Click for a larger image)
    Can't change from console

  6. 但是你可以從調試器更改值:

    (Click for a larger image)
    Setting the value

1

哼哼是的。只要輸入變量名稱,並點擊回車評價(對物體使用dir(xxx)

NB:VAR必須全球集上unsafeWindow

+1

不起作用。可能是因爲每個用戶腳本都嵌入了匿名函數。 – Kugel 2011-01-09 21:54:48

+0

我想你試圖訪問本地變種,嘗試記錄而不是`console.log(var)` – 2011-01-09 21:56:25

0

什麼工作對我來說是我由可變全球。即

var x = "Chairman Mao"; // x not accessible to chrome 
    x = "Chairman Mao"; // X becomes accessible to chrome via inspector 
相關問題