2012-05-09 128 views

回答

1

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

+0

该变量是一个对象。应该提到这一点。 –

+0

我相信消息传递适用于没有循环引用的对象。如果你的对象有循环引用,那会让事情变得更加困难,因为它们不能被串化 - 你可能只需要去除它们。 – apsillers

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.js1.js

+0

当然,这是行得通的 - 我认为这种行为是超出界限的,但是,既然你说过2.js'不能用于内容脚本(但我想我现在明白你的意思了不应该在加载时每次加载 - 动态注入是可以的,是吗?)。我相信你也可以在你的背景页面中使用'chrome.tabs.executeScript('2.js')'。 – apsillers

+0

你是对的,请原谅我的任何困惑。我也会考虑使用'executeScript()',但目前扩展并不需要一个背景页面。 –

相关问题