WebKit Plugin 开发指南
一、 NPAPI 介绍
WebKit plugin 遵 循 了 NPAPI (Netscape Plugin Application
Programming Interface) 标准,支持这个标准的浏览器需要实现一组规定的
API 供插件调用,这组 API 形如 NPN_XXX,插件可以利用这些 API 进行二次开
发。而 NPAPI 插件以一个动态链接库作为物理载体进行提供,里面同样也实现
了一组规定的 API。形式包括 NP_XXX 和 NPP_XXX,NP_XXX 是系统需要默
认调用的方法,用于认知这个插件,比如 NP_Initialize,而 NPP_XXX 是用于
插件完成一些实际功能,比如 NPP_New。所有的插件都需要放置在指定的目
录下,每个插件可以处理一种或者多种 MIME 格式的数据,如 audio/x-ms-
wma,说明该插件可以处理 wma 格式的音频。
NPAPI 是一个很经典的插件方案,用 dll 进行注入,用协定的 API 进行通
信,用字符串描述插件能力。插件宿主(在这里就是浏览器…)会根据能力描
述,动态加载插件,并负责插件调用的流程和生命周期管理。而插件中,负责
真实逻辑的处理,并可以构造 UI 与用户交流。以此类方式实现的插件系统,往
往是处理的逻辑比较固定,但可扩展性不错。
二、 WebKit plugin 接口介绍
1) NP_XXX 类接口
NP_XXX 类 接 口 一 般 为 动 态 链 接 库 的 导 出 接 口 , 主 要 有
NP_Initialize、NP_GetMIMEDescription、NP_GetValue、NP_Sh
utdown 的等几个函数,不同平台的接口可能略有不同,但基本功能都
是一样的,都是通过接口来初始化、销毁以及认知此动态库。
详细的接口介绍请参照:
https://developer.mozilla.org/en/
Gecko_Plugin_API_Reference:Plug-in_Side_Plug-in_API
2) NPP_XXX 类接口
NPP_XXX 类接口一般为提供给浏览器引擎调用的接口,主要包括: