【发布时间】:2014-02-12 15:06:36
【问题描述】:
我正在尝试开发仅适用于指定页面的扩展 - 如果页面所有者将全局变量添加到他们的代码中(例如,ACCEPT_STATS = true;)我想执行指定的代码。
我已经将我的函数绑定到 onload 事件,我还找到了如何在 Firefox 中执行此操作的解决方案:
var win = window.top.getBrowser().selectedBrowser.contentWindow;
if (typeof win.wrappedJSObject.ACCEPT_STATS !== 'undefined') {
// code to run if global variable present
}
但我无法在 Chrome 下完成这项工作。是否有可能访问文档的全局变量 throw Chrome 扩展代码?
我的扩展代码是作为内容脚本注入的。
【问题讨论】:
-
这听起来像是内容脚本应该做的事情,不是吗? developer.chrome.com/extensions/content_scripts.html
-
“但是,内容脚本有一些限制。它们不能:[...]使用由网页或其他内容脚本定义的变量或函数”
-
内容脚本在一个孤立的世界中执行。您必须将代码注入页面。
-
是的,这就是问题所在。我搜索提供了全局 JS 变量的网站,并想测试指定页面是否包含它。
-
好吧,但是只要网页正在监听,就可以使用 window.postMessage 在内容脚本和网页之间进行通信。但不听我认为没有机会,因为它违反了安全政策
标签: javascript google-chrome google-chrome-extension