NPAPI是电脑上大部分非ie浏览器都支持的一种浏览器扩展,类似ie的activex技术。
如果你有一个模块需要支持所有浏览器,那么支持activex和npapi之后,基本上就全支持了。
npapi是写plugin的,而不是写extension的。它可以用于实现flash插件,但是不能用来实现adblock。
npapi的plugin对象是由具体页面来控制生命周期的,类似flash一样,必须页面里面显式的调用才会生效。
下图是npapi的生命周期图,有助于了解plugin是什么(不同于extension)
官方英文资料:https://developer.mozilla.org/en-US/docs/Plugins
官方详细资料:https://developer.mozilla.org/en-US/docs/Gecko_Plugin_API_Reference/Plug-in_Basics
这是一篇很好的中文介绍:http://www.eifr.com/article.php?id=1273
这是另一篇不错的介绍:http://www.cppblog.com/epubcn/archive/2008/11/12/66719.html
更进一步,npapi的内存管理:http://colonelpanic.net/2009/12/memory-management-in-npapi/