我已经编写了一个Hello World示例扩展。现在我正在尝试编写Chrome扩展程序以获取某个JavaScript变量的值(如果已声明。
)所以让我们说有一个
var test = 'a';
在源代码中。我希望得到a
值。
更新:我不可以访问“原始”网站的代码,但我知道这个变量总是存在,并且具有一定的值,总是不同的
警报可以。 (我可以从分机的页面提醒吗?)
我看到有“许可”和“标签”之类的东西,我不确定我会丢失什么。
我尝试搜索,找到类似的内容,但this示例在我点击链接时没有做任何事情。
答案 0 :(得分:1)
从内容脚本中,您无法访问页面上声明的变量。
内容脚本在称为孤立世界的特殊环境中执行。他们可以访问注入页面的DOM,但不能访问页面创建的任何JavaScript变量或函数。
我看到的唯一方法是通过后台页面中的XHR加载脚本源并解析它。然后,如果要将结果发送到内容脚本,则可以使用message passing。请注意,如果后续脚本更改了变量的值,则此解决方案将不起作用。
答案 1 :(得分:0)
如果您可以控制该页面,则可以将该值放入页面上隐藏的HTML元素中,然后您可以使用内容脚本提取扩展程序。
在网站上:
var test a = 'a';
document.documentElement.dataset["a"] = a;
在扩展程序的内容脚本中:
var a = document.documentElement.dataset["a"];
确保在页面上的脚本之后执行内容脚本(例如,在清单中添加"run_at": "document_end"
)