浏览器插件编程NPAPI

本文介绍了NPAPI(Netscape Plugin Application Programming Interface),一种跨平台的浏览器插件接口。通过学习NPAPI,开发者可以在Mac OS X上为Safari、Chrome和Firefox创建插件。文章详细阐述了插件与扩展的区别,并提供了NPAPI插件的代码实现,包括NP_Initialize、NP_GetEntryPoints和NP_Shutdown等关键方法,以及NPP_New、NPP_Destroy和NPP_GetValue等插件与浏览器交互的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

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

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

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


代码实现:

插件要与浏览器进行通信,所以必须实现以下的接口:

     
     
     
1
2
3
     
     
     
NPError NP_Initialize(NPNetscapeFuncs *browserFuncs);
NPError NP_GetEntryPoints(NPPluginFuncs *pluginFuncs);
void NP_Shutdown( void);

NP_Initialize是插件实例化时将浏览器的结构体指针(NPNetscapeFuncs*)传递给插件的方法,NP_GetEntryPoints方法是用于浏览器取得插件的结构体指针(NPPluginFuncs*),NS_Shutdown是指当插件关闭时调用的方法。

以下是接口的实现:

     
     
     
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值