Javascript 从Google Chrome控制台访问用户脚本变量

Javascript 从Google Chrome控制台访问用户脚本变量,javascript,google-chrome,console,userscripts,Javascript,Google Chrome,Console,Userscripts,出于调试目的,是否可以从Google Chrome中的控制台访问userscript变量?是。只需键入var名称并点击enter进行计算(对于对象使用dir(xxx)) 注意:var必须是unsafeWindow上的globalset假设您有一个带有以下代码的Chrome用户脚本: var userscriptVar = "I'm a global variable, userscript context."; window.var2 = "I'm a window.scope va

出于调试目的,是否可以从Google Chrome中的控制台访问userscript变量?

是。只需键入var名称并点击enter进行计算(对于对象使用
dir(xxx)


注意:var必须是
unsafeWindow上的globalset

假设您有一个带有以下代码的Chrome用户脚本:

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变量,请执行以下操作:

  • 确定用户脚本的ID。您可以在扩展页上看到它(
    chrome://extensions/
    ):

  • 通过单击控制台底部的上下文菜单切换到脚本的上下文:

    请注意,id(
    pfnbaeafnicjhfknodoplomdmgkc
    )与扩展页面上列出的id相同

  • 现在,您可以立即查看和更改窗口范围的变量(
    var2
    ),但无法查看userscript的全局(
    userscriptVar
    ),因为脚本实例早已完成并消失

  • 要在脚本仍处于活动状态时访问和更改userscript变量,请在脚本中设置断点并使用调试器。请参阅以了解如何做到这一点

  • 当userscript在适当的断点处暂停时,您可以从控制台查看全局值,但不能更改全局值

  • 但您可以从调试器更改值:


  • 对我起作用的是我使变量成为全局变量。i、 e

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

    不起作用。可能是因为每个用户脚本都嵌入到annonymous函数中。我认为您正在尝试访问本地变量,请尝试使用
    console进行日志记录。log(var)
    更改了我的答案,因为这是5yo可以理解的详细信息;-)