javascript - 扩展停止 browser.browserAction.onClicked.addListener(funct) 上的执行;

标签 javascript google-chrome-extension firefox-addon

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

背景.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 插件。

最佳答案

这是因为 browserAction API 不适用于内容脚本环境,并且来自 myfunction 的用于修改网页的代码在该 API 无法工作时将无法工作。在扩展程序的后台脚本中执行。

你可以使用这样的东西来完成这项工作:

browser.browserAction.onClicked.addListener(function(tab){
    chrome.tabs.executeScript(tab.id, {
        code: `(${myfunction.toString()})();`
    }
});

和manifest.json:

"permissions":["tabs"],
"background": {
    "scripts": ["background.js"]
}

关于javascript - 扩展停止 browser.browserAction.onClicked.addListener(funct) 上的执行;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49103924/

相关文章:

javascript - polymer 和 x-tag 与 vanilla js 的比较

JavaScript 范围问题?

javascript - setUninstallURL - 在 Safari 和 Firefox 中?

javascript - 如何在 Chrome 扩展中使用 javascript 截取某些特定区域的屏幕截图?

debugging - 在开发过程中调试 Firefox 插件的最快方法

http-headers - Firefox 附加 SDK : Get http response headers

javascript - 将 JS 文件与 firefox-addon 一起使用时的内容安全策略问题

javascript - Laravel - 从 Ajax Post 请求获取数据

Javascript typescript 将特殊字符附加到字符串不起作用

javascript - 设置断点和调试 eval 的 JavaScript