2012-09-13 37 views
1

我已经写了一个Hello World示例扩展。现在我正在尝试编写一个Chrome扩展来获取某个JavaScript变量的值(如果声明的话)。活动标签的源代码 - 获取变量的值

所以我们说有一个

var test = 'a'; 
在源代码中

。我想获得a的价值。

更新:我做有机会获得“原始”网站的代码,但我知道,这个变量是永远存在的,并且具有一定的价值,总是不同的。

警报会做。 (可以从分机的页面提醒您)

我看到有些内容像“权限”和“标签”,我不知道我可能会丢失什么。

我试图搜索,发现类似的东西,但this示例只是点击链接时不做任何事情。

回答

1

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

documentation摘自:

内容脚本在一个特殊的环境中执行所谓的隔离的世界。他们可以访问他们注入的页面的DOM,但不能访问页面创建的任何JavaScript变量或函数。

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

0

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

网站上

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

在扩展的内容脚本:

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

只要确保内容脚本页面上的脚本后执行(例如通过增加"run_at": "document_end"您清单)

+0

我无法控制“原始” – Ash

+0

您可以查看页面的代码并查看该变量是否被添加到元素并检查该元素的值。 但是,这是一个巨大的解决方法,它需要以这种方式编写代码。因此,如果您想将其应用于“未知”网站(意思是:没有您知道并可以测试的特定网页集),这也不起作用。 – greiner