如何从Chrome扩展程序中调用JS文件中的特定功能
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从Chrome扩展程序中调用JS文件中的特定功能相关的知识,希望对你有一定的参考价值。
我正在写一个Chrome扩展程序,我试图找出如何从script.js
文件中的background.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
吗?
答案
使用弹出窗口...
因此,当用户点击图标时,您可以显示任何操作按钮。
chrome extension: browser action
另一答案
如果你想在不同的情况下调用不同的函数 - 最好使用sendMessage()
使用folowing background.js将script.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();
});
以上是关于如何从Chrome扩展程序中调用JS文件中的特定功能的主要内容,如果未能解决你的问题,请参考以下文章
如何从 JS 开发控制台访问用 Chrome 扩展编写的功能?
React.js Chrome 扩展 - 如何将 Background.js 中的数据存储在 React 内部的变量中?