Javascript 将浏览器UI按钮添加到Firefox WebExtension

Javascript 将浏览器UI按钮添加到Firefox WebExtension,javascript,firefox,firefox-addon,manifest,firefox-addon-webextensions,Javascript,Firefox,Firefox Addon,Manifest,Firefox Addon Webextensions,我是个新手。我制作了一个FirefoxWebExtension插件。这很简单。该插件会更改已访问网站上的文字 它有一个声明内容脚本的清单文件 我的问题是:如何将浏览器UI按钮添加到加载项 最终,我的目的是让按钮允许用户在看到网站交付或被WebExtension修改之间进行选择。然而,现在我只是停留在添加按钮 这是我的manifest.json: WebExtensions可以将浏览器UI按钮添加为浏览器操作和/或页面操作。每种类型最多只能有一个。对于每一个,您都可以有一个按钮,后台脚本中的代码会

我是个新手。我制作了一个FirefoxWebExtension插件。这很简单。该插件会更改已访问网站上的文字

它有一个声明内容脚本的清单文件

我的问题是:如何将浏览器UI按钮添加到加载项

最终,我的目的是让按钮允许用户在看到网站交付或被WebExtension修改之间进行选择。然而,现在我只是停留在添加按钮

这是我的manifest.json:


WebExtensions可以将浏览器UI按钮添加为浏览器操作和/或页面操作。每种类型最多只能有一个。对于每一个,您都可以有一个按钮,后台脚本中的代码会响应该按钮(接收
单击
事件),或者浏览器会显示一个作为弹出窗口提供的HTML文件。您可以将默认设置为显示弹出窗口或单击。您可以使用
setPopup()
在两者之间动态切换(设置为“”会触发
单击
;任何其他字符串和引用的HTML文件将用作弹出窗口,而不会触发
单击
事件)

浏览器操作 通过向manifest.json中添加一个键,可以向浏览器用户界面添加一个按钮:

然后可以在后台脚本中添加侦听器。但是,您首先必须有一个背景脚本。您可以通过向manifest.json添加
background
键来创建一个:

然后,在background.js中,您可以使用以下命令添加按钮单击的侦听器:

页面操作 或者,您可以使用页面操作,而不是使用浏览器操作。manifest.json中的键和后台脚本中的用法非常相似:

在manifest.json中,请使用:

然后,在background.js中,您可以使用

关于页面操作:

页面操作与浏览器操作类似,只是它们与特定网页相关联,而不是与整个浏览器相关联。如果某个操作仅与某些页面相关,则应使用页面操作并仅在相关页面上显示。如果操作与所有页面或浏览器本身相关,请使用浏览器操作

默认情况下显示浏览器操作,但默认情况下隐藏页面操作。可以通过调用、传入选项卡的ID来显示特定选项卡的属性

显示弹出窗口 通过将
default\u popup
键添加到
browser\u action
键或
page\u action
键,可以使默认设置为显示弹出窗口。上面的
browser\u操作
可能与以下弹出窗口类似:

"browser_action": {
    "default_icon": "myIcon.png",
    "default_title": "Do my thing",
    "browser_style": true
    "default_popup": "myPopup.html"
}

好的,让我试着重新编写所有代码,然后让你知道。我把它弄糊涂了,allOk,这里是我的清单。jason[link]这里是thebackground.js[link]我无法完成这项工作。(很抱歉,我不知道这里的post代码是怎么写的,我尝试了我知道的所有组合,但什么都没有)manifet.json文件本身(使用一个空白的background.js)和有效的图标文件。我还没有看过/尝试过你的background.js文件。我知道我的回答并没有完全回答你提出的问题。问题是,如上所述,您的问题对于这种格式来说太过宽泛。实际上至少有三个不同的问题:“如何将按钮添加到浏览器UI?”(这个问题),“如何使浏览器UI按钮看起来和行为像切换按钮?”,以及“如何打开和关闭加载项对网页所做的更改?”。最后一个问题本身很可能/可能太宽泛了(因为有太多的方法来解决)。(续)(续)因为这个问题实在太宽泛了,我应该投票结束而不是回答。我建议您只考虑添加一个UI按钮,以及如何使按钮看起来和行为像一个开关。一旦你对这个问题有了答案,你可以问第三个问题。根据第三个问题的措辞,它可能会以这种形式回答。我在考虑如何回答这个问题。我想一个答案可能会掩盖这个问题,但是一个深入的答案太长了。如果任何答案(关于任何问题,尤其是你自己的问题)是有帮助的,你应该投票表决。对于你自己的问题,如果有人提供了你用来回答你问题的答案,你可以在给出公平的观点的同时,也可以对按钮的用途做出假设(公平,但无论如何)。这可能是问题过于宽泛的另一个症状。添加一个不起任何作用的按钮可能是最简单的。但是第四个问题是问这个按钮是用来做什么的?可能是一个切换,一个上下文菜单,一个弹出窗口,一个组合。可能是开/关,可能是打开配置,选择要更改的新词,更改更改的词的样式,等等。但基本问题是,添加一个按钮,没有定义任何操作,因此没有采取任何操作,非常清楚和简单,没有?@user314159,是的,了解更多信息会有所帮助。有可能是OP想要别的东西。但是,对于WebExtension,只有两种类型的“浏览器UI按钮”:浏览器操作按钮和页面操作按钮。是的,您可以将菜单选择添加到上下文菜单中,添加选项页面(添加按钮以从“关于:插件”中打开),将按钮添加到弹出窗口(通常使用浏览器或页面操作打开),甚至可以将按钮添加到页面内的插件UI(现在您还可以在侧边栏中拥有UI)。但是,这些都不被认为是在“浏览器UI”中添加按钮。
"browser_action": {
    "default_icon": "myIcon.png",
    "default_title": "Do my thing",
    "browser_style": true
}
"background": {
    "scripts": [
        "background.js"
    ]
}
chrome.browserAction.onClicked.addListener(function(tab) {
    //Do what you want to do when the browser UI button is clicked.
});
"page_action": {
    "default_icon": "myIcon.png",
    "default_title": "Do my thing",
    "browser_style": true
}
chrome.pageAction.onClicked.addListener(function(tab) {
    //Do what you want to do when the browser UI button is clicked.
});
"browser_action": {
    "default_icon": "myIcon.png",
    "default_title": "Do my thing",
    "browser_style": true
    "default_popup": "myPopup.html"
}