开发Firefox扩展最简单的方法是什么

What is the easiest way to develop Firefox extension?

本文关键字:方法 是什么 最简单 Firefox 扩展 开发      更新时间:2024-03-21

我计划开发一个简单的Firefox扩展,它将缩短当前活动选项卡的URL,显示一个带有缩短URL的弹出窗口,并将其放入剪贴板。

在谷歌浏览器中,这将非常容易(根据http://developer.chrome.com/extensions/getstarted.html)--纯JavaScript加上对与浏览器UI交互的JavaScript API-s的一些调用。

然而,在搜索了一个好的Firefox扩展教程后,我发现了最官方的链接:

  • https://developer.mozilla.org/en-US/docs/Extensions
  • https://developer.mozilla.org/en-US/docs/Building_an_Extension
  • 如何编写Firefox插件

根据他们的说法,即使是与浏览器UI进行最简单的交互,我似乎也必须学习XUL语言。除此之外,我还必须设置自定义的Firefox配置文件,以免在开发过程中使用默认配置文件,创建复杂的目录结构,用模糊的XML编写清单,弄清楚如何打包和测试我实现的任何东西,等等

现在是2013年,难道没有更简单的方法来构建Firefox扩展吗?

现在是2013年,难道没有更简单的方法来构建Firefox扩展吗?

是的

你在问题中提供的链接已经过时得令人难以置信。有一种新的、更好的开发Firefox扩展的方法——Firefox插件SDK

然而,仅仅按照"firefox插件教程"的思路在谷歌上搜索很难偶然发现它。我很惊讶Mozilla没有更积极地宣传它,或者至少在你找到的那些页面上提到它。

入门步骤(Mac/Linux,但对于PC应该非常相似):

  • 从下载SDKhttps://addons.mozilla.org/en-US/developers/builder,打开包装
  • 快速浏览README文件(总是很有用)
  • 从SDK目录(README文件所在的目录)执行source bin/activate
  • 执行cfx docs——这将引导SDK文档的本地副本并在浏览器中打开它
  • 保留SDK目录,为您的扩展创建一个空目录
  • 在扩展目录中执行cfx init——这将生成所有必要的文件/目录
  • 按照以下内容开始使用cfx页面:
    • 只需使用几行JS更新lib/main.js,即可将自定义小部件放置到附加栏上
    • 执行cfx run——这将打开新的Firefox实例,其中包含新的闪亮扩展

总而言之,我只花了几个小时就阅读了文档,熟悉了SDK API-s,找到了将小部件放在导航栏而不是附加栏上的SDK模块,并用大约50行JavaScript开发了全功能扩展。

啊!

更新

有一个新的标准,叫做WebExtensions

来自MDN

目前有几个用于开发Firefox插件的工具集,但WebExtensions将在2017年底成为标准。

如果您正在编写新的加载项,我们建议您编写WebExtension

截止日期https://blog.mozilla.org/addons/2016/11/23/add-ons-in-2017/,唯一的方法将是使用WebExtensions。Firefox 52将接受最后一个SDK扩展,而Firefox 57将终止所有其他扩展支持,仅支持WebExtensions。

Firefox复制了Google Chrome的扩展API。因此,您可以只需使用Chrome扩展,看看Firefox是否已经支持所有API(它们现在应该已经支持了)。NoScript的Giorgio Maone等程序员积极支持对WebExtensions的更改。

要开发WebExtension,您需要

  • web-ext-可以通过安装的工具

    npm install --global web-ext
    
  • 或者简单地使用Firefox的about:debugging或Chromium的chrome:extensions来临时加载网络扩展。

无论哪种方式,您都需要在自己创建的目录中创建一个manifest.json文件,该文件将所有功能粘合在一起。看见https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Your_first_WebExtension作为第一个例子。或者谷歌文档https://developer.chrome.com/getstarted.

是的,有三种不同的技术可以用来构建扩展:

  1. 基于SDK的附加组件扩展
  2. 手动启动的restartless扩展
  3. 覆盖扩展

你可以在这里阅读之间的比较

如果可以的话,建议使用插件SDK,它使用无重启扩展机制,但简化了某些任务和自行清理。如果插件SDK不足以满足您的需要,请实现手动无重启扩展。

步骤开始使用基于SDK的插件

  1. 安装
    • 在OS X、FreeBSD、Linux上安装
    • 使用Homebrew在OS X上安装
    • 在Windows上安装
  2. 创建用户界面
  3. 与浏览器交互

有两种官方的开发插件的方法,每种方法都有优缺点:

1-WebExtensions(更新的方法):

WebExtensions是Firefox插件的未来。如果您可以使用WebExtensions API,这是最好的选择。您现在可以开发和发布WebExtensions,但它们仍处于早期状态。

2-附加SDK(旧方法):

插件SDK提供了用于开发Firefox插件的API,以及用于开发、测试和打包它们的工具。

我做了一个关于使用Firefox插件SDK开发扩展的教程:

如何使用插件SDK 开发Firefox扩展