我正在编写Chrome扩展程序,我正在尝试弄清楚如何从script.js
文件中的background.js
文件中调用特定函数。
到目前为止,我的background.js文件看起来像这样
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(null, {file: "script.js"});
});
当用户选择扩展程序图标时,会运行script.js
文件中的所有j。
但是,我希望script.js包含两个函数,当用户选择扩展图标时,它会在每个函数之间切换。
例如,如果我的script.js
文件看起来像
function makeChanges(){
// some functinality
}
function undoChanges(){
// some other functionality
}
如何在点击扩展图标时专门获取其中一个功能?这可以使用executeSript
吗?
答案 0 :(得分:0)
答案 1 :(得分:0)
如果您想在不同情况下调用不同的功能 - 最好使用 sendMessage()
进行调整将 script.js 加载到当前页面后,其中包含 background.js :
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(null, {file: "script.js"});
});
您可以通过 background.js 向您注入的 script.js 发送消息:
chrome.tabs.query({active: true, currentWindow: true}, function(tabs)
{
chrome.tabs.sendMessage(tabs[0].id, {'callFunction': 'makeChanges'});
// OR
chrome.tabs.sendMessage(tabs[0].id, {'callFunction': 'undoChanges'});
}
并在 script.js 内添加以下逻辑:
chrome.extension.onMessage.addListener(function(request, sender, sendResponse)
{
if(request.callFunction === 'makeChanges')
makeChanges();
else
undoChanges();
});