1

我已经编写了一个 Hello World 示例扩展。现在我正在尝试编写一个 Chrome 扩展来获取某个 JavaScript 变量的值,如果它被声明的话。

所以假设有一个

var test = 'a';

在源代码中。我想得到那个a值。

更新:无法访问“原始”网站的代码,但我知道这个变量总是存在的,并且具有一定的价值,总是不同的。

一个警报就可以了。(我可以从扩展程序页面发出警报吗?)

我看到有“权限”和“标签”之类的东西,我不确定我可能会错过什么。

我试图搜索,发现类似的东西,但是当我点击链接时,这个例子没有做任何事情。

4

2 回答 2

1

从内容脚本中,您无法访问页面上声明的变量。

取自文档

内容脚本在称为孤立世界的特殊环境中执行。他们可以访问被注入页面的 DOM,但不能访问页面创建的任何 JavaScript 变量或函数。

我看到的唯一方法是在后台页面中通过XHR加载脚本源并解析它。然后,如果要将结果发送到内容脚本,则可以使用消息传递。请注意,如果变量的值已被后续脚本更改,则此解决方案将不起作用。

于 2012-09-18T08:41:41.750 回答
0

如果您可以控制该页面,则可以将该值放入页面上的隐藏 HTML 元素中,然后您的扩展程序可以使用内容脚本提取该元素。

在网站上:

var test a = 'a';
document.documentElement.dataset["a"] = a;

在扩展的内容脚本中:

var a = document.documentElement.dataset["a"];

只需确保内容脚本在页面上的脚本之后执行(例如,通过添加"run_at": "document_end"到清单中)

于 2012-09-15T10:29:23.103 回答