如何让我的 Firefox 扩展工具栏按钮自动显示?

2023-12-20

我创建了一个由工具栏按钮组成的 Firefox 扩展。如何进行设置,以便在安装扩展程序时,该按钮自动出现在主工具栏中。我不希望我的用户必须转到自定义工具栏菜单并将我的按钮拖过来。


From https://developer.mozilla.org/En/Code_snippets:Toolbar#Adding_button_by_default https://developer.mozilla.org/En/Code_snippets:Toolbar#Adding_button_by_default --

当您创建和部署扩展并包含工具栏按钮时 通过覆盖自定义工具栏调色板来实现它,它不可用 默认情况下。用户必须将其拖到工具栏上。下列 默认情况下,代码会将您的按钮放置在工具栏上。这应该 仅在安装后第一次运行插件时完成,因此 如果用户决定删除您的按钮,它就不会显示 每次他们启动应用程序时都会再次出现。

Notes

默认情况下,仅在首次运行时或扩展更新添加新按钮时插入按钮一次。

仅当您的按钮为用户带来真正的价值并且将成为您的扩展程序的频繁入口点时,才默认添加您的按钮。

不得在以下任何元素之间插入工具栏按钮:组合后退/前进按钮、位置 栏、停止按钮或重新加载按钮。这些元素有 彼此相邻放置时的特殊行为,并且如果 由另一个元素分隔。

/**
 * Installs the toolbar button with the given ID into the given
 * toolbar, if it is not already present in the document.
 *
 * @param {string} toolbarId The ID of the toolbar to install to.
 * @param {string} id The ID of the button to install.
 * @param {string} afterId The ID of the element to insert after. @optional
 */
function installButton(toolbarId, id, afterId) {
    if (!document.getElementById(id)) {
        var toolbar = document.getElementById(toolbarId);

        // If no afterId is given, then append the item to the toolbar
        var before = null;
        if (afterId) {
            let elem = document.getElementById(afterId);
            if (elem && elem.parentNode == toolbar)
                before = elem.nextElementSibling;
        }

        toolbar.insertItem(id, before);
        toolbar.setAttribute("currentset", toolbar.currentSet);
        document.persist(toolbar.id, "currentset");

        if (toolbarId == "addon-bar")
            toolbar.collapsed = false;
    }
}

if (firstRun) {
    installButton("nav-bar", "my-extension-navbar-button");
    // The "addon-bar" is available since Firefox 4
    installButton("addon-bar", "my-extension-addon-bar-button");
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让我的 Firefox 扩展工具栏按钮自动显示? 的相关文章

随机推荐

  • 移除嵌入对象时 pullAll

    我有包含以下文档的数据库 gt db bios find name first James pretty id 9 name first James last Gosling birth ISODate 1955 05 19T04 00 0
  • 从 java 运行命令提示符?

    嗨 我想使用 java 从命令提示符运行一些东西 我想进入以下目录C Program Files OpenOffice org 3 program 然后运行soffice headless accept socket host 127 0
  • 如何在 mongodb 中与聚合更新一起设置和取消设置?

    db getCollection name update bid 3860 set tl add multiply intField 24 60 60 1000 dateField unset intField 1
  • 我的 Web 服务器的版本控制

    我正在构建一个基于 Web2Py 的 Web 应用程序 并在远程 EC2 开发服务器上进行大部分开发 我想对整个系统进行版本控制 包括所有 python 模块 网页和 Apache 配置文件 这些文件显然分散在我的 Linux 机器上 但我
  • 如何判断一个变量是分配在栈还是堆中?

    在某处偶然发现这个面试问题 在C中 给定一个变量x 如何确定该变量的空间是在堆栈还是堆上分配的 有什么方法可以以编程方式找到它 而不必通过符号表等 并且查找空间是否在堆栈或堆中分配有任何实际意义吗 不 一般来说不是 你知道gcc吗 fspl
  • 如何在Pygame中画一个半透明的圆圈?

    我正在尝试在 Pygame 中画一个半透明的圆圈 这是我的代码 import pygame pygame init clock pygame time Clock screen pygame display set mode width h
  • Solr DataImportHandler:我可以使用 XPathEntityProcessor 从 xml 属性获取动态字段名称吗?

    我有一些 XML 要摄取到 Solr 中 这听起来像是一个旨在由 DataImportHandler 解决的用例 我想要做的是从一个 XML 属性中提取列名 并从另一属性中提取值 这是我的意思的一个例子
  • 跨流程使用事务

    我正在尝试使用 System Transactions TransactionScope 来协调一组进程 每个进程都执行一些数据库工作 最终 所有进程都需要通过一个父进程以原子方式提交或回滚 不幸的是 到目前为止我所尝试的一切都不起作用 我
  • Maven GWT 2.0 和 Eclipse

    有谁知道使用 maven 和 eclipse 使用新的 2 0 版本的 GWT 创建项目的好指南吗 我在让他们很好地合作方面遇到了很多问题 对于它的价值 我可以使用 Maven Eclipse 插件创建一个 gwt 项目 该项目工作正常 但
  • iOS - 更改 UIBarButtonItem 高度

    UIToolbar 有一个很好的调整大小选项 self navigationController toolbar frame 我想知道是否有人知道更改 UIBarButtonItem 高度的方法 我有一个高度为 117 像素的自定义工具栏
  • Rails where() 数组上的 SQL 查询

    我会尽可能地解释这一点 我对用户帖子有疑问 selected posts Posts where category gt Baseball 我想写下以下声明 这是伪术语 User where user has a post in selec
  • 自定义对话框中的 java.lang.IllegalStateException

    我是 Android 新手 正在开发自定义警报对话框 我想通过单击编辑按钮打开另一个对话框 代码如下 if v getId R id edt order System out println edit buton click System
  • 如何配置 charles-proxy 在 Linux 中与 chrome 一起使用 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我尝试设置 chrome 代理 google chrome proxy server 127 0 0 1 8888 Chrome 打开一个
  • 是否有处理 IO 的组长协议规范?

    在Erlang中 每个进程都有一个组长 当一个进程想要打印一些东西 即它调用io库或做类似的事情 时 它会向其组长发送一条消息 我的问题是 在哪里可以找到这些消息的规范 或者一般来说 明确小组领导者应该做什么 我通过一些实验设法发现 有时该
  • Angular 2 选择器中的 kebab-case (tslint)

    这是我的tslint json file rulesDirectory node modules codelyzer rules class name true comment format true check space curly t
  • 浮动操作按钮不会引发 OnClick 事件

    我有以下布局
  • 通过 Azure API 管理将 REST API 公开为 SOAP

    我们有一组现有的 REST API NET Core 我们需要将这些 API 公开为 SOAP 服务 希望通过使用 Azure API 管理来实现 这可能吗 我看过很多关于将 SOAP 服务公开为 REST API 的帖子 但没有看到相反的
  • c\c++ 中存储 COM 的 VT_DECIMAL 的正确类型是什么?

    我正在尝试为 ADO 编写一个包装器 A DECIMAL是一种类型 aCOM VARIANT可以是 当VARIANT类型是VT DECIMAL 我试图将其放入 C 原生数据类型中 并保留变量值 似乎正确的类型是 long double 但我
  • 在vba excel中通过CDO获取gmail收件箱邮件消息

    我想使用 VBA 中的 CDO 访问 Gmail 帐户中的收件箱 我已经成功发送邮件消息 但不知道如何将收件箱消息提取到 Excel 工作表中 如果可能的话 我希望能够识别每条消息的标签 虽然这个问题特别要求 CDO 但从这个类似的问题 h
  • 如何让我的 Firefox 扩展工具栏按钮自动显示?

    我创建了一个由工具栏按钮组成的 Firefox 扩展 如何进行设置 以便在安装扩展程序时 该按钮自动出现在主工具栏中 我不希望我的用户必须转到自定义工具栏菜单并将我的按钮拖过来 From https developer mozilla or