23

在 Firefox 中有插件和扩展。你能解释一下为什么这些插件有不同的名称和标签吗?它们是否差异如此之大,以至于需要不同的名称?我认为区分这些东西有点不自然,扩展具有越来越多的功能,与插件相比它们缺少什么?

4

3 回答 3

31

差异既是历史的,也是现实的:

  • 插件是编译的、可加载的模块,最初来自NPAPI;它们可以存在于浏览器的进程空间之外(这会导致各种有趣的互操作性问题和漏洞)。其中最常见的例子是 Flash 和 Java - 两者都请求网页内部的子窗口(“视口”或“画布”(不是 HTML5 的canvas——完全是别的东西:网页的本机部分))并自行处理,在很大程度上独立于浏览器的方式。
  • 扩展主要是用 JavaScript 和XUL编写的。由于扩展程序作为浏览器的一部分,它们具有比 JS-in-a-webpage 更广泛的访问权限,但它们仍然受到一些限制。最常见的集成方式是挂钩 FF 的某些功能并对其进行扩展

因此,尽管插件和扩展看起来是相关的,但它们在幕后是非常不同的技术。

于 2010-11-07T22:58:32.037 回答
11

根据 Mozilla 的说法,插件可以帮助浏览器显示内容,例如播放媒体。扩展实际上为浏览器添加了新功能。

请参阅此处的前几段: https ://developer.mozilla.org/en/extensions

于 2010-11-07T22:49:22.817 回答
5

一种是与 Firefox 并行运行的程序。他们得到一个画布,当他们在画布上绘画时,Firefox 会渲染它。值得注意的例子:Flash、Java、QuakeLive。

另一个是在 Firefox 的 javascript 解释器/编译器中运行的程序。它们更直接地扩展了 firefox 的功能,因为它们可以访问 firefox 内部,而不仅仅是一个画布。此外,它们更便携,因为它们不需要操作系统的底层支持。

这两种方法各有利弊,它们解决不同的任务。

于 2010-11-07T22:54:25.047 回答