查看文章 |
cnBeta的这篇文章提到了在Firefox/Mozilla系浏览器中所谓扩展(extensions)和插件(plugins)的区别.
NPAPI经过长期修正,并由Mozilla牵头增加了新的npruntime脚本API,现在已经相当成熟,现在除了Windows平 台上的IE之外几乎所有浏览器(所有Mozilla/Netscape系浏览器、Opera、Safari、Konqueror等)都使用这种插件架构(IE在5.5SP2以前也曾经通过plugin.ocx ActiveX提供过对NPAPI插件的支持,后因“安全原因”废止). 它是一种纯粹的二进制可执行插件,通常是为了支持网页中出现的<object>和<embed>标签中定义的对象而存在,不会增 加浏览器自身的任何功能.而且由于他们的运行权限和浏览器本身相同,因此一旦出错,就可以将浏览器拖死(比如Quicktime for Windows经常导致Firefox非法操作之类常见问题).在Mozilla系列浏览器中,可以通过输入about:plugins查看所有已经启用 的插件信息. 而Firefox及一切Mozilla程序的所谓扩展,和插件的概念大不一样.Mozilla扩展并不是真正的本地代码,而只是使用JavaScript语言编制,使用和各主要Mozilla程序一样的所谓XUL(一种基于XML的用户界面脚本语言)编制界面,通过XPCOM 的XPConnect API与浏览器实现交互.这样使得它具有相当高的跨平台可用性,而且因为它完全在浏览器的JavaScript引擎中运行,使得浏览器能够控制他们的行 为,减少扩展出错导致整个浏览器出错的可能性. 对XUL的依赖使得它只被Mozilla系浏览器支持,在XUL支持不完全的部分此类浏览器(如K- Meleon)中得不到完整的支持.当然,XUL也是个可移植的平台,甚至有XULRunner这类独立的扩展运行环境的存在. 通常在Mozilla系浏 览器中,扩展能做到的事情非常多,能够显示和控制自己和整个浏览器的用户界面,可以直接使用浏览器的功能实现自身与网络的通讯、可以通过XPCOM对浏览 器的渲染引擎进行操作,其用途远远比插件宽泛.扩展自身是.xpi安装包,包含所有组件文件和安装脚本,安装后一般不是单一的文件. 这两 类插件在能力上都无法真正和ActiveX相比,后者在Windows中神通广大,作用范围遍及整个Win32子系统,而对于前者,插件可以执行浏览器以 外的代码,扩展不能对运行环境外部造成除了浏览器本身功能之外的其它影响.目前恶意的NPAPI插件数量极少,而扩展(Firefox中)目前基本上都是 Mozilla的官方站点提供下载,几乎不可能出现恶意扩展;而大量的ActiveX控件却是所谓的“流氓软件”. |