浏览器扩展和插件之间的技术差异是什么?

Mic*_*Lai 1 plugins terminology google-chrome-extension

从用户的角度来看,扩展程序似乎是您访问Chrome网上应用店以扩展浏览器的功能,而插件是您必须访问外部第三方网站才能扩展浏览器的功能.

从技术或实施的角度来看,两者有什么区别?我在这里看到了一个类似的问题(phplivex是扩展名还是插件?)但是没有得到我想要的答案.

我追求扩展或插件的开发和部署方式(如果有的话),以及两者之间是否有任何重叠.

Rob*_*b W 5

"扩展"和"插件"这两个词在软件产品中有很多不同(但相关)的含义.许多用户(和开发人员)可以互换使用这些词.在浏览器扩展中,它们具有精确的含义,通过UI也可以看到.例如,可以管理扩展程序(和应用程序)chrome://extensions/,而可以chrome://plugins/在Google Chrome中管理插件.

在Chrome,Firefox,Opera和Safari中,浏览器扩展指的是使用浏览器扩展API扩充浏览器的软件(请参阅Chrome,Firefox,Opera,Safari的扩展文档).大多数现代浏览器都需要使用JavaScript编写扩展.扩展通常与平台无关,并且在有限的环境中运行(Firefox是后者的明显例外).扩展通常部署为一组JavaScript文件,其他资产(HTML,CSS,媒体......)和捆绑在特定于浏览器的存档中的配置.浏览器通常提供直接在浏览器中安装扩展的无缝方式.

插件是指NPAPI插件,它是预编译的二进制文件,通过NPAPI增强浏览器的功能.通过在具有特定MIME类型的文档中插入<embed><object>标记来调用这些插件.NPAPI插件是特定于操作系统的(尽管源代码可以独立于平台),但不是特定于单个浏览器.NPAPI的功能不受浏览器的限制,因此浏览器插件中的错误通常具有巨大的安全隐患(想想Java,Adobe Flash Player,Adobe PDF Reader).这是NPAPI支持从Chrome完全删除的原因之一.NPAPI插件通常安装在浏览器外部,例如通过Windows上的MSI安装程序.

如在引言中所述,"插件"和"扩展"可互换使用.如果你听到有人在谈论"(浏览器)插件",那么它们实际上意味着浏览器扩展.