2011-01-09 67 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