原创技术分析:更深层探究 Mozilla Firefox 扩展和插件的区别
来源:互联网 发布:军工软件 行业分析 编辑:程序博客网 时间:2024/05/16 15:23
其实Firefox(Mozilla)扩展和插件在各方面都是不一样的,具有完全不同的来源、用途和存在形式.
首先Mozilla的所谓“插件”,具有非常长的历史.它使用一种来自Netscape时代的古老插件API——NPAPI(Netscape Plugin Application Programming Interface), 最初是Adobe的Acrobat部门和Netscape合作,为了在Netscape内显示PDF文件而开发出来的一种插件系统.最初它与浏览器的交互 必须有Java的支持,之后则使用自己的所谓跨平台的XPCOM API模型.
这种插件系统并非跨平台,每个平台的文件格式都有所不同.(参考http: //developer.mozilla.org/en/docs/Gecko_Plugin_API_Reference:Plug-in_Development_Overview) 比如Flash插件,Windows平台下文件名为NPSWF32.dll,是一个Win32 DLL;Mac OS 9下文件名为Flash Player NP-PPC,也是一个动态链接库类型的文件(OS X下文件名类似,但代码部分格式为Mach-O);Linux下名为libflashplayer.so和flashplayer.xpt,是所谓的共享对象文件,等等.
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控件却是所谓的“流氓软件”.
- 原创技术分析:更深层探究 Mozilla Firefox 扩展和插件的区别
- 更深层探究 Mozilla Firefox 扩展和插件的区别
- Mozilla FireFox插件开发
- Mozilla技术布道者给Web开发人员推荐的Firefox插件列表
- FireFox的扩展插件
- firefox(Mozilla)分析
- firefox(Mozilla)分析
- 更深层的反射
- Ubuntu安装 J2SE Runtime Environment (JRE) 和 Mozilla FireFox 使用的插件
- 扫盲帖:Firefox的扩展与插件区别
- linux firefox下的影音插件:mozilla-mplayer
- 开发者和设计师必备的14款Firefox扩展插件
- Mozilla学习:《实战Firefox 扩展开发》心得。
- 手动删除Firefox中的扩展和插件
- 技术,继续,更深入的
- Mozilla Firefox 1.0 简体版(附汉化插件)
- 推荐几个实用的FireFox扩展插件
- 关于FireFox扩展插件的示例演示
- Android WebView 不支持 H5 input type="file" 解决方法
- 十六进制的写法
- JAVA常用正则能用的 -- 色色尝试过的 -- 非网上传播的垃圾版本的
- 网教18. 双塔问题
- dhclient.conf分析
- 原创技术分析:更深层探究 Mozilla Firefox 扩展和插件的区别
- Scala中单引号与双引号的区别
- jsp获取ckeditor内容
- 各个窗口的应用
- poj1459 Power Network
- Word文档的比对
- forum.sinomagazine.com 个人博客开了,不用再夹起尾巴写博客了
- 全国省市县区域信息最新数据库脚本(mysql版本)
- ASM磁盘组创建Grid Infrastructure 12安装图解(一)