【问题标题】:What is The difference between Firefox extension and plugin?Firefox 扩展和插件有什么区别?
【发布时间】:2011-05-06 10:15:48
【问题描述】:

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

【问题讨论】:

    标签: firefox firefox-addon browser-plugin browser-addons


    【解决方案1】:

    区别既是历史的,也是现实的:

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

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

    【讨论】:

    • 比我的答案更准确!
    • 现在有 XUL 扩展和 WebExtensions - 前者显然已被弃用,而后者则乏善可陈。耶。
    【解决方案2】:

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

    在此处查看前几段: https://developer.mozilla.org/en/extensions

    【讨论】:

    • imo,这个答案比公认的答案更有价值(虽然准确,但过于深入实施细节并且难以理解(部分原因是它包含嵌套括号))。这个答案提供了一个高层次的概述,没有这些技术经验的人可以理解。
    【解决方案3】:

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

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

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

    【讨论】:

    • +1。小修正:默认情况下,插件的画布直接由插件渲染,完全绕过浏览器(例如,Flash 的wmode=transparent 属性是一种解决方法)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-10
    • 2012-08-11
    • 2018-03-06
    • 1970-01-01
    • 2011-10-10
    • 2020-06-17
    • 1970-01-01
    相关资源
    最近更新 更多