与Chrome扩展程序中的内容脚本中的页面脚本进行通信

时间:2012-05-09 16:31:59

标签: javascript google-chrome-extension scope

我正在加载一个内容脚本(1.js),该脚本在某些时候附加了一个<script> - 元素,指向扩展内的文件(2.js)。 2.js不能作为内容脚本包含在内。

有没有办法使用2.js中的1.js内定义的变量?

2 个答案:

答案 0 :(得分:1)

在后台页面和内容脚本之间使用message passing。后台页面保存值(通过将2.js作为脚本加载,或者将2.js作为应用程序的后台脚本本身)并使用chrome.extension.onRequest.addListener侦听传入消息。内容脚本发送请求,内容脚本发送具有所需值的响应。

答案 1 :(得分:0)

我想出来了。有点脏,但使用动态对象,我有问题。

我只需将所有代码注入页面即可。这是我的内容脚本:

var path = document.createElement('div');
path.id = 'codearea-path';
path.innerHTML = chrome.extension.getURL('/');
path.style.display = 'none';
document.body.appendChild(path);

var script = document.createElement('script');
script.src = chrome.extension.getURL('1.js');
document.head.appendChild(script);

然后我使用相同类型的代码在2.js内包含1.js