扩展程序在browser.browserAction.onClicked.addListener(funct)上停止执行;

时间:2018-03-05 05:22:35

标签: javascript google-chrome-extension firefox-addon

到目前为止,我的浏览器扩展程序很简单,但清单存在问题。在一种情况下,只有浏览器按钮工作,而另一种情况下只有脚本工作。

background.js

function myfunction() { //change page text }
myfunction();

function onclicktest() { // do something on btn click }

browser.browserAction.onClicked.addListener(onclicktest);

alert('Never shown');

案例1 - 浏览器按钮不起作用,myfunction被调用

"content_scripts":
[{
  "matches": ["<all_urls>"],      
  "js": ["background.js"],
  "run_at": "document_end"
}]

案例2 - 浏览器按钮正常工作,myfunction无法调用

"background": {
    "scripts": ["background.js"]
}

这是一个Firefox附加组件。

1 个答案:

答案 0 :(得分:2)

这是因为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"]
}