浏览器插件编程NPAPI之入门篇——NPAPI的介绍

浏览器插件编程NPAPI之入门篇——NPAPI的介绍

netscape

最近在学习Mac OSX平台下浏览器的插件开发,首先我查看了Xcode的Document关于WebKit的Plugins的介绍,却看到苹果有如下的Note:Beginning in OS X v10.7, Safari does not support WebKit plug-ins because they are not compatible with the new process architecture. Going forward, you must convert WebKit plug-ins to Netscape-style plug-ins or Safari Extensions.

也就是说在10.7之后,Safari已经不再支持通过WebKit的Plugins的接口编写的插件了,如果需要编写插件,就必须转向使用NPAPI了,但是网络上关于NPAPI的文档却少得可怜,经过在Google、stackoverflow,github反复搜索,最终发现Mozila的官方wiki是一个不错的学习入口:https://wiki.mozilla.org/NPAPI.

NPAPI就是Netscape Plugin Application Programming Interface的缩写,Netscape应该大家都不陌生吧,曾经的浏览器鼻祖,虽然Netscape早已离我们而去,但Netscape很多技术却被保留了下来(尤其是Mozila),在各主流的浏览器中都得以实现,其中就包括NPAPI这套接口。

NPAPI是一套用C语言编写的跨平台的浏览器插件接口,所以对NPAPI的学习也是非常有意义的,比如在Mac OSX平台上面利用NPAPI编写的插件,就可以在Safari、Chrome、FireFox中同时使用。NPAPI式的插件环境允许插件访问的脚本语言,如JavaScript。它可以让脚本语言来访问和控制元素。

目前很多主流的浏览器插件都是NPAPI接口来实现的,比如Adobe Reader、QuickTime,利用NPAPI编写插件,可以使用C/C++,但如果我们仅仅只需要在Mac OSX环境下运行,使用Objective-C也是没有任何问题的。另外NPAPI的插件开发也有很多有名的开发框架,如Firebreath(github:https://github.com/firebreath/FireBreath), JUCE(官网地址:http://www.rawmaterialsoftware.com/juce.php),QtBrowserPlugin(地址:http://doc.qt.nokia.com/solutions/4/qtbrowserplugin/developingplugins.html),当然为了学习NPAPI的接口使用,推荐直接使用NAAPI的接口从零开始编写自己的插件,我们将在下一篇文章中动手编写一个自己的浏览器插件。

附1:插件与扩展的差异(部分参考于Google的搜索结果)

插件(Plugins):在浏览器中,插件的功能就是将第三方的库提供的功能通过embed,object标签在页面中应用起来,比如Flash插件,Silverlight插件,Quicktime插件。这些插件就像驱动程序一样,使得你的浏览器可以调用本地方法,系统的接口,实现浏览器无法独立实现的功能,或者这么讲,插件使得别的程序才能处理的内容在浏览器的页面中得以展现和处理。

扩展(Extensions or Add-ones):扩展通常是通过程序自身所开放的api来实现的用于扩展程序自身功能的东西,在浏览器中,比如Firefox的Firebug,浏览器的Twitter的插件,这些插件很多都是增加一些浏览器上的窗口或者按钮,来扩展浏览器的功能。这里有一点需要说明一下,扩展本身可以包含一个或者多个插件,但是插件不包含扩展。

附2:Apple关于NPAPI的插件的示例:NPAPI_Core_Animation_Movie_Plugin

 

 

转载链接:http://www.tanhao.me/pieces/1075.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值