插件、附加组件和扩展之间的确切区别是什么。我读了很多关于这方面的文章,很困惑,例如,请参阅以下四个定义:
1-firefox表示"插件是扩展、主题和插件的统称"(参见https://support.mozilla.org/en-US/questions/790919)
2-ww.Differencebetween.net说"插件和插件只是扩展…插件是指第三方软件(与特定程序交互)时通常使用的术语,如flash播放器…
3-维基百科(https://en.wikipedia.org/wiki/Plug-in_%28computing%29)表示插件已被弃用。
4-我在另一个网站上读到,插件比附加组件更大,它包含了附加组件的概念。
此外,我已经阅读了firefox插件与扩展与插件中提供的答案http://colonelpanic.net/2010/08/browser-plugins-vs-extensions-the-difference/
然而,我想了解这些差异,尤其是在firebreath中,插件通过用户同意自动执行,插件应该手动安装。此外,我认为插件嵌入在htm页面中,而附加组件是像firefox中的xpi一样以分离文件的形式存在。
对这三个概念的任何精确、全面和精确的定义,如果出现差异,将不胜感激。
一般经验法则:
插件
当你谈论网络浏览器时,插件谈论的是特定于页面的NPAPI或类似插件。IE本身不支持"插件",但它们有activex控件,可以填充类似的功能,尽管也有BHO(浏览器帮助对象)activex控件,它们更类似于扩展。因此,我们(FireBreath团队)通常使用术语"插件"来指代类似NPAPI插件的东西,而术语"扩展"则指代类似典型扩展的东西(firefox XPI、Chrome CRX等)。
插件只知道他们所在的页面;他们对浏览器或其他页面中加载的内容一无所知。
插件造成了很多安全问题,因为它们实际上运行的是本机代码。这导致了很多针对他们的歧视——其中很多都是应得的。正因为如此,也因为NPAPI是一个令人头疼的问题(因此创建了FireBreath),大多数浏览器都试图逐步淘汰插件。除非没有其他方法可以解决您的问题,否则永远不应该使用插件。
也就是说,在很多情况下,它们是唯一的选择。
扩展
扩展是特定于浏览器的东西,它们在每个浏览器上都有点不同,但往往能够了解更多关于浏览器整体状态的信息;它们可以自动添加到页面中,与页面分开访问,等等。
加载项
附加组件更多的是一个通用术语,用于表示许多不同的东西。它的实际含义取决于谁在说话,但mozilla的定义可能和任何定义一样好;它可以是任何为您的web浏览器添加功能的东西,无论上下文如何。
主要差异
一旦安装,扩展往往是自动的。插件可以通过以下两种方式之一实例化:1)通过网页HTML中的<object>
或<embed>
标记,或者2)因为它们被注册为浏览器不支持的mimetype的处理程序。
FireBreath
FireBreath处理插件。它与典型的浏览器扩展无关,只与插件有关。它是一个C++框架,而不是javascript框架,它允许您添加可以在网页中使用的功能。FireBreath插件通常在<object>
标签内部使用。
FireBreath后NPAPI
你可能知道,也可能不知道,Chrome已经放弃了对NPAPI插件的支持(从45版开始),Firefox从52版开始也放弃了对它的支持(不包括52版扩展支持版,它将再支持一年)。FireBreath 2.0目前正被多家公司用于生产,可以生产"插件"(不是真正的插件,但工作原理类似),可以通过助手扩展通过Native Messaging与Google Chrome和Firefox配合使用。主要限制是绘图;没有办法通过本机消息直接绘制到浏览器(好吧,没有好的方法,在windows以外的平台上根本没有方法)。
最终,我们可能会在FireBreath 2.0中的原生消息桥上添加对使用Canvas/WebGL绘制的一些抽象的支持,但这还没有完成。坦率地说,我不需要它,所以我没有费心去做。FireBreath是一个开源框架,不幸的是,在过去几年里没有得到用户的足够支持,所以文档有点过时,还有很多小事情没有做。
Native Messaging方法依赖于Extension——当然,我们这样做主要是为了混淆所有人,但也因为这是允许我们从Google Chrome或Firefox中的页面与FireBreath插件进行通信的唯一方式。
*(上次更新时间为2017年3月6日;Firefox 52定于明天发布)
希望能有所帮助。另请参阅:
- 浏览器插件与扩展插件的区别
- FireBreath 2.0主页