我试图修改Google sample code以进行代码注入。文件manifest.json
包含后台脚本:
"background": {
"scripts": ["background.js"],
"persistent": false
},
我添加了content script:
"content_scripts": [
{
"matches": ["*://*/*"],
"js": ["filter.js"]
}
],
现在,当用户点击扩展程序按钮时,我想调用foo()
中定义的功能filter.js
。我在background.js
:
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript({
code: 'foo(testText);'
});
});
其中foo()
在filter.js
中定义为
function foo(test) {
alert('Test: ' + String(test));
}
var testText = 'foo';
我可以执行该功能,但无法通过testText
变量。我得到VM3181:1 Uncaught ReferenceError: testText is not defined
。
我知道我错误地引用了变量,但是如何做到这一点?
答案 0 :(得分:1)
请看一下sendMessage
和onMessage
,这些示例会改编自Google:
在background.js
:
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.sendMessage(tab.id, {greeting: "foo"}, function(response) {
console.log(response.farewell);
});
});
在filter.js
:
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if (request.greeting == "foo") {
//your Foo function can be called
sendResponse({farewell: "bar"});
}
});