附加组件、插件和扩展之间的确切区别

Exact difference between add-ons, plugins and extensions

插件、附加组件和扩展之间的确切区别是什么。 我已经阅读了很多关于此的内容并且感到困惑, 例如看这四个定义:

1-fire-fox 说 "Add-ons is the collective name for extensions, themes and plugins"(参见 https://support.mozilla.org/en-US/questions/790919

2-www.Differencebetween.net 说“插件和附加组件只是扩展......插件是指第三方软件时通常使用的术语(与某个程序交互)喜欢 Flash 播放器...

3- 维基百科 (https://en.wikipedia.org/wiki/Plug-in_%28computing%29) 表示插件已被弃用。

4-我在另一个网站上看到插件比附加组件更大,它包含附加组件的概念。

我也阅读了firefox add-on vs. extensions vs. plugins and http://colonelpanic.net/2010/08/browser-plugins-vs-extensions-the-difference/

中提供的答案

但是我想了解这些差异,尤其是在 firebreath 中,插件通过用户同意自动执行,而附加组件应手动安装。我还认为插件嵌入在 htm 页面中,而附加组件是像 fire-fox 中的 xpi 一样的独立文件形式。

如果能对这三个出现差异的概念进行准确、全面和准确的定义,我们将不胜感激。

一般经验法则:

插件

当您谈论网络浏览器时,插件就是指特定于页面的 NPAPI 或类似插件。 IE 本身不支持 "plugins",但它们有 activex 控件可以填充类似的功能,尽管还有 BHO(浏览器帮助对象)ActiveX 控件更类似于扩展。因此,我们(FireBreath 团队)通常使用术语 "plugin" 来指代像 NPAPI 插件一样工作的东西,而术语 "extension" 指像典型扩展一样工作的东西(firefox XPI,Chrome CRX 等)。

插件只知道它们所在的页面;他们对浏览器或其他页面加载的内容一无所知。

插件导致了很多安全问题,因为它们实际上是 运行 本机代码。这导致了对他们的许多歧视——其中大部分是应得的。正因为如此,并且因为 NPAPI 是一个令人头疼的问题(因此创建了 FireBreath),大多数浏览器都试图逐步淘汰插件。除非没有其他方法可以解决您的问题,否则永远不要使用插件。

也就是说,在很多情况下它们是唯一的选择。

扩展程序

扩展是特定于浏览器的东西,它们在每个浏览器上都有点不同,但往往能够更多地了解浏览器的整体状态;它们可能会自动添加到页面,可以从页面单独访问等。

附加组件

附加组件更像是一个通用术语,用于表示很多不同的事物。它实际上意味着什么取决于谁在谈论,但 mozilla 的定义可能和任何人一样好;它可以是任何可以为您的网络浏览器添加功能的东西,无论上下文如何。

主要区别

安装后扩展往往是自动的。插件以两种方式之一实例化:1) 通过网页 HTML 中的 <object><embed> 标记,或 2) 因为它们被注册为处理程序浏览器不支持的mimetype。

火息

FireBreath 处理插件。它与典型的浏览器扩展无关,只有插件。它是一个 C++ 框架,而不是 javascript 框架,它允许您添加可在网页中使用的功能。通常 FireBreath 插件在 <object> 标签内使用。

FireBreath post-NPAPI

你可能知道也可能不知道,Chrome 已经放弃了对 NPAPI 插件的支持(从版本 45 开始),而 Firefox 从版本 52 开始就这样做了(不包括版本 52 扩展支持版本,它将再支持他们一年)。 FireBreath 2.0 现在被几家公司用于生产,并且可以生产 "plugins"(不是真正的插件,但工作方式类似),它可以通过帮助程序通过本机消息与 Google Chrome 和 Firefox 一起工作延期。主要限制是绘图;无法通过本地消息传递直接绘制到浏览器(好吧,没有好的方法,在 windows 以外的平台上根本没有办法)。

最终我们可能会在 FireBreath 2.0 的本地消息传递桥上使用 Canvas / WebGL 添加对一些抽象的支持,但这还没有完成。坦率地说,我不需要它,所以我懒得去做。 FireBreath 是一个开源框架,不幸的是,在过去的几年里没有得到足够的用户支持,所以文档有点过时,还有很多小事没有完成。

Native Messaging 方法依赖于一个扩展——当然,我们这样做主要是为了让每个人感到困惑,但也是因为这是允许我们从 [=72= 中的页面与 FireBreath 插件进行通信的唯一方式] Chrome 或 Firefox。

*(最后更新于 2017 年 3 月 6 日;Firefox 52 定于明天发布)

希望对您有所帮助。另见: