![](/img/trans.png)
[英]How to call a function in js file from another server in extension
[英]How to call a specific function from a JS file from a Chrome extension
我正在编写一个Chrome扩展程序,并且试图找出如何从background.js
文件的script.js
文件中调用特定函数。
到目前为止,我的background.js文件看起来像这样
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(null, {file: "script.js"});
});
当用户选择扩展图标时,它将运行我的script.js
文件中的所有js。
但是,我希望script.js包含两个函数,并且当用户选择扩展图标时,它将在每个函数之间切换。
例如,如果我的script.js
文件看起来像
function makeChanges(){
// some functinality
}
function undoChanges(){
// some other functionality
}
单击扩展程序图标时,我将如何特别运行其中一项功能? 使用executeSript
可以做到吗?
如果要在不同情况下调用不同的函数,最好使用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();
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.