Firefox 附加组件 ID 约定

2023-12-15

我正在使用 WebExtension API 编写 Firefox 附加组件。一些API(例如browser.storage.sync)需要一个附加 ID在附加组件中明确声明manifest.json file.

The ID 的文档 states:

扩展的 ID,必须是以下之一:

  • GUID(火狐1.0)
  • 字符串格式如下:[电子邮件受保护]

后一种格式更容易生成和操作。 Firefox 1.5 进行检查以确保您的 ID 属于一种格式 或其他,并将拒绝安装格式错误的附加组件 id。但是,您不应使用真实的电子邮件地址作为您的 ID,因为 它可能会吸引垃圾邮件。

关于我可以提供什么样的字符串,文档不是很清楚。是吗...

  • 有有效的电子邮件地址吗?
  • 任何“看起来像”的字符串[电子邮件受保护]?
  • 怎么样[电子邮件受保护]?
  • 它应该与扩展本身相关吗?
  • 它应该有我拥有的域名还是可以是任何域名?

etc.

因为我必须显式声明 ID 才能使用browser.storage.sync,我无法依赖自动识别可以由 Firefox for WebExtensions 提供。

Firefox 中显式声明的附加组件 ID 有哪些约定?


实际的要求是ID 匹配以下正则表达式:

var gIDTest = /^(\{[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\}|[a-z0-9-\._]*\@[a-z0-9-\._]+)$/i

使用 GUID 或近似电子邮件地址的内容是一项要求,在有关安装清单的 MDN 文档(用于旧版附加组件)。从 Firefox 1.5 开始,它是通过在 Firefox 代码中放置的检查来强制执行的。上面的正则表达式可以描述为:

  1. 必须是一个GUID在格式中使用十六进制数字{8digits-4digits-4digits-4digits-12digits} or
  2. A string containing a single @ with at least 1 character after the @.
    1. 中的所有字符@格式必须匹配/[a-z0-9-\._]/i(除了单@).
    2. The @格式之前可以有零个或多个字符@
    3. The @格式不需要是有效的电子邮件地址。它不必具有有效的域。它甚至不需要是有效的电子邮件地址。它只需要匹配正则表达式即可。

It's 建议如果您选择 ID,请使用@格式,而不是 GUID.

For the @格式,一般用作[some ID/name for extension]@[something representing the developer]。而之前和之后的部分@往往有一种看起来像用户名@域的格式,我见过附加 ID,其中“用户名”为空和/或“域”是单个单词。例如,@a将是一个有效的ID。

ID必须是唯一的

除了格式要求外,还有以下要求:

  • 该 ID 在已提交给 Mozilla 的所有附加组件中必须是唯一的(由任何人提交)。

至于它在提交给 Mozilla 的所有附加组件中是唯一的:当您第一次尝试将其提交给 Mozilla 进行签名时,您会发现它是否是唯一的。如果它已经存在,您将必须更改它才能成功提交您的附加组件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Firefox 附加组件 ID 约定 的相关文章

  • Ajax文件上传

    我想使用 Ajax 和 php 上传文件 我有一个表格
  • 如何从 JavaScript 中的字符串中删除空白字符?

    如何从 JavaScript 中的字符串中删除空白字符 修剪很容易 但我不知道如何将它们从inside字符串 例如 222 334 gt 222334 您可以使用正则表达式 如下所示来替换所有空格 var oldString 222 334
  • libxmljs 的替代品 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 目标 使用 Node js 访问网页 使用 xpath 语法操作 DOM 并打印新的 DOM libxm
  • 如何按多个项目搜索/过滤列表?

    我正在寻找一个示例 或者可能是一个关于通过在文本框中输入的多个项目来过滤 搜索项目列表的方法的一点提示 假设我有一个列表 ul li Coffee li li Tea li li Milk li li Water li li Juice l
  • 按键对 JavaScript 对象进行排序

    我需要按键对 JavaScript 对象进行排序 因此 以下内容 b asdsad c masdas a dsfdsfsdf 会成为 a dsfdsfsdf b asdsad c masdas 这个问题的其他答案已经过时 与实施现实不符 并
  • 在其他不可滚动的 div 上滚动时如何滚动可滚动的 div?

    我知道这个问题听起来很令人困惑 但这就是我想要做的 在下面的代码片段中 如果用户在绿色 div 上滚动 我希望黄色 div 相应地滚动 就像滚动黄色 div 一样 请注意 黄色 div 有overflow auto 但绿色的则不然 docu
  • 实现悬停信息框

    我有一个日历 当用户将鼠标悬停在单元格上时 会出现一个很大的信息框 其中包含该日期的详细信息 虽然当用户离开时使信息框消失 但我遇到了一些麻烦 我基本上想要它 这样当鼠标光标移出信息框隐藏的日历单元格时 它就会消失 但我遇到了麻烦 因为mo
  • 如何强制折断不可折断的字符串?

    我有一个根据数据库中包含的数据生成的 HTML 页面 数据库有时包含浏览器无法分解的长字符串 因为这些字符串不包含可分解的字符 空格 点 逗号等 有没有办法使用 html css 甚至 javascript 来解决这个问题 看到这个link
  • 如何在php中使用一张图像绘制形状

    我需要使用图像的一部分来创建帧图像 例如 用户将从后端上传图像片段 现在我需要根据前端用户的要求在前端创建一个框架 用户将选择框架的高度和宽度 然后他将选择该图像片段 如下所示 我没有办法做到这一点 我尝试通过 css 和 html can
  • JavaScript:常量属性

    在javascript中 我可以将对象的属性声明为常量吗 这是一个示例对象 var XU Cc Components classes or function aXU this Cc Components classes var XU new
  • 将异步事件监听器与 Nestjs EventEmitter 模块和无服务器函数结合使用

    我正在尝试在 Nestjs EventEmitter 模块的帮助下实现具有无服务器 lambda 函数的异步工作线程 处理程序在发出事件时被调用 但该函数在 async await 调用之前关闭 我尝试过同时使用emit and emitA
  • “|”是什么意思(单管道)在 JavaScript 中做什么?

    console log 0 5 0 0 console log 1 0 1 console log 1 0 1 为什么0 5 0返回零 但任何整数 包括负数 都返回输入整数 单管道 有什么作用 这是一个按位或 https developer
  • put方法中的Angularjs文件上传不起作用

    我有一个简单的待办事项应用程序 我试图在其中上传照片和单个待办事项 现在我已经创建了这个工厂函数来负责待办事项的创建 todosFactory insertTodo function todo return http post baseUr
  • 尝试使用 Firebug 查找 JavaScript 文件中的函数

    我试图找到这个函数调用 myFooBar 该函数在某些 HTML 中内联引用 但页面加载了大量 JavaScript 并且在每个文件中搜索该函数需要相当多的工作 如何使用 Firebug 找到此函数所在的 JavaScript 文件 打开脚
  • 为什么 Array.prototype.filter() 在 Magnolia JavaScript 模型中抛出错误?

    我正在尝试过滤 FreeMarker 列表Magnolia JavaScript 模型 https documentation magnolia cms com display DOCS61 How to work with JavaScr
  • JavaScript Promise 不执行 .then()

    我在 JavaScript 中的 Promise 方面遇到了一些问题 我想做的是获得一个地址列表 然后对于每个地址 我需要调用地理编码 API 来获取 lat lng 然后我将继续将标记与热图一起绘制 这是我的代码 let promiseK
  • 根据特定字符获取整个字符串或子字符串

    我有一个包含 MIME 类型的字符串 例如application json 现在我想将其与实际的 HTTP 标头进行比较 在本例中content type 如果标头包含 MIME 类型 那么就很简单 if mimeType contentT
  • Django 将 JSON 数据传递给静态 getJSON/Javascript

    我正在尝试从 models py 中获取数据并将其序列化为views py 中的 JSON 对象 模型 py class Platform models Model platformtype models CharField max len
  • 弹出窗口的动态高度取决于内容,可能吗?

    是否有可能获得一个宽度始终为 400px 的弹出窗口 但根据弹出窗口中的内容动态高度 我已经看到了这个 但不知道如何将其应用到弹出窗口 调整 iframe 的宽度高度以适应其中的内容 https stackoverflow com ques
  • AngularJS 在指令运行之前通过 AJAX 检索数据

    我正在使用 AngularUIuiMap http angular ui github com directives map实例化谷歌地图的指令 uiMap 指令非常适合处理硬编码数据 mapOptions and myMarkers 但是

随机推荐