扩展在 browser.browserAction.onClicked.addListener(funct) 停止执行;
Extensions stops execution on browser.browserAction.onClicked.addListener(funct);
到目前为止,我的浏览器扩展很简单,但清单存在问题。在一种情况下,只有浏览器按钮有效,而在另一种情况下,只有脚本有效。
background.js
function myfunction() { //change page text }
myfunction();
function onclicktest() { // do something on btn click }
browser.browserAction.onClicked.addListener(onclicktest);
alert('Never shown');
案例 1 - 浏览器按钮不起作用,我的函数被调用
"content_scripts":
[{
"matches": ["<all_urls>"],
"js": ["background.js"],
"run_at": "document_end"
}]
案例 2 - 浏览器按钮正常工作,myfunction 未被调用
"background": {
"scripts": ["background.js"]
}
这是一个 Firefox 插件。
那是因为 browserAction
API 对内容脚本环境不可用,myfunction
中本应修改网页的代码将无法正常工作在扩展的后台脚本中执行。
您可以使用类似这样的方法来完成这项工作:
browser.browserAction.onClicked.addListener(function(tab){
chrome.tabs.executeScript(tab.id, {
code: `(${myfunction.toString()})();`
}
});
和manifest.json:
"permissions":["tabs"],
"background": {
"scripts": ["background.js"]
}
到目前为止,我的浏览器扩展很简单,但清单存在问题。在一种情况下,只有浏览器按钮有效,而在另一种情况下,只有脚本有效。
background.js
function myfunction() { //change page text }
myfunction();
function onclicktest() { // do something on btn click }
browser.browserAction.onClicked.addListener(onclicktest);
alert('Never shown');
案例 1 - 浏览器按钮不起作用,我的函数被调用
"content_scripts":
[{
"matches": ["<all_urls>"],
"js": ["background.js"],
"run_at": "document_end"
}]
案例 2 - 浏览器按钮正常工作,myfunction 未被调用
"background": {
"scripts": ["background.js"]
}
这是一个 Firefox 插件。
那是因为 browserAction
API 对内容脚本环境不可用,myfunction
中本应修改网页的代码将无法正常工作在扩展的后台脚本中执行。
您可以使用类似这样的方法来完成这项工作:
browser.browserAction.onClicked.addListener(function(tab){
chrome.tabs.executeScript(tab.id, {
code: `(${myfunction.toString()})();`
}
});
和manifest.json:
"permissions":["tabs"],
"background": {
"scripts": ["background.js"]
}