我有一个Chrome扩展程序,当前点击时会打开侧边菜单。到目前为止工作正常,但我试图将它绑定到一个键。这工作正常,但只有在我点击按钮至少一次之后,因为那时它从后台JS页面注入了JS
chrome.browserAction.onClicked.addListener(clicked)
呼叫:
var opened = [];
function clicked(tab){
var currentTabId = tab.id;
if(opened.indexOf(currentTabId) < 0){
opened.push(currentTabId);
chrome.tabs.executeScript({
file: 'jquery.js'
});
chrome.tabs.insertCSS({
file: 'admin.css'
});
chrome.tabs.executeScript({
file: 'admin.js'
});
} else {
chrome.tabs.executeScript({
code: 'admin.toggle();'
});
}
}
这一切都很棒。 Admin.js
也会侦听波浪号~
按钮以打开侧抽屉(它调用相同的admin.toggle()
功能)。但问题是我需要在第一次按钮点击之前注入JS,因此它知道要监听~
。
我仍然可以使用browserAction
执行此操作吗?或者我需要使用内容脚本吗?
提前致谢!
答案 0 :(得分:1)
当用户单击浏览器操作按钮时,将触发浏览器操作。所以没有办法(也没有意义)以编程方式触发它。
您已经在使用内容脚本(通过executeScript
注入的文件和代码)是内容脚本(只需 programmatically injected )。
如果您希望“立即”使用该功能,则需要在用户导航到新的网页时自动注入一些内容脚本。
实现此目标的一种方法是通过 manifest.json 中的 content_scripts
property 。
如果您不想在每个网页中注入jQuery和admin.js
(特别是如果您的脚本“很重”,例如注册了大量的事件监听器等),您可以注入一个小脚本侦听~
,然后取消注册侦听器,注入脚本并执行admin.toggle()
。