NPAPI和PPAPI插件开发

NPAPI和PPAPI开发

Author: kagula

Revison: 1
Last modify date:2015-10-20


环境:

 [1]Visual Studio 2010 SP1
    Visaul Stuio  2013 Update4
 [2]Python2.7
 [3]Firefox 41.0.1
 [4]IE 11
 [5]Google chrome 45.0.2454.101 
 [6]Opera 32.0
 [7]360浏览器 7.1.1.808
 [8]nacl sdk pepper39 
 [9]windows7 SP1 64bits


关键词

   Firebreath, NPAPI, PPAPI, Web worker, Messaging System, Native Client Module, Application Structure
   Chrome Web Store, portable executable file, architecture-specific executable file 
   

前言  

    如果要实现Windows平台,跨不同浏览器插件,就需要分别实现
    ActiveX  适用浏览器IE11,因为IE11对FireBreath兼容性不是很好。
    FreBreath(NPAPI)  适用浏览器,360浏览器,Chrome 42版本以下,Opera、Firefox。
    NaCl(可分为PPAPI、NaCl、PNaCl三个等级) 适用浏览器Chrome 42版本或以上。
    ActiveX的baidu上很多,但是NPAPI和PPAPI的很不完善,所以这里仅仅介绍NPAPI和PPAPI的开发。


第一部份:NPAPI



第一个插件(NPAPI):
   firebreath是个跨浏览器插件开发工具,所以先尝试FireBreath。
Step1:
  参考资料[3]下载firebreath最新稳定版本,并解压到“D:\SDK\firebreath-FireBreath-105dcc6\”目录下
  从官网上下载firebreath-boost-1.50.0.zip
  位置参考下面摆放:
  <FB_ROOT>/src/3rdParty/boost/boost/
  <FB_ROOT>/src/3rdParty/boost/libs/


Step2:先建一个Hello工程。
 打开控制台,切换到“D:\SDK\firebreath-FireBreath-105dcc6”文件夹,
   输入命令“python fbgen.py”根据提示输入你第一个工程plugin name,plugin description,company name等信息。
   命令执行完毕后,再调用“prep2010.cmd”命令。
   python就在当前build子目录下建好了VS2010 solution,FireBreath.sln文件。
  打开sln后应该就能正确编译。如果有问题参考资料[1]。


Step3:测试插件是否正确加载。
[S3-1]IE下运行插件。
  命令行方式转到“D:\SDK\firebreath-FireBreath-105dcc6\build\bin\hello\Debug”路径下,使用“regsvr32 nphello.dll”注册控件。
  "D:\SDK\firebreath-FireBreath-105dcc6\build\projects\hello\gen"路径下打开“FBControl.htm”文件,就可以在IE中正常运行hello控件。
  如果有问题,参考资料[2]。
[S3-2]Firefox下运行插件
  我是把dll复制到“C:\Users\kagula\AppData\Roaming\Mozilla\Firefox\Profiles\ie1ypj6h.default\plugins”路径就Ok了,如果没有“plugins”目录就新建一个。
  不同的计算机Win7下,参考下面的格式就Ok了。
  “C:\Users\XXX\AppData\Roaming\Mozilla\Firefox\Profiles\XXX.default\plugins”
[S3-3]Chrome下运行
  Chrome 45 不支持NPAPI。
[S3-4]Opera下运行
  使用“regsvr32 nphello.dll”注册控件后,可以直接使用,
但是会提示“此网站使用的插件很快将不被支持”
[S3-5]360浏览器下运行
  使用“regsvr32 nphello.dll”注册控件后,可以直接使用,


Step4:测试插件功能是否正常
 [1]hello.cpp的FB::JSAPIPtr hello::createJSAPI()函数,创建了helloAPI实例返回。
 查看helloAPI实现,
  echo方法用来示例参数传递,testEvent方法示例事件回调,testString和version示例如何存取对象的属性。
 [2]FBControl.htm文件,点击“Fire a test event”会间接调用helloAPI实例的testEvent方法,这个方法又会激活JS的test事件。
  在IE中没有反应,但是在Opera和360浏览器中测试正常。
 [3]FBControl.htm文件,点击“Activate click counter”,就多一次对插件echo事件的绑定。
    然后,再点击“Click me!”,JS会调用插件的echo方法,而插件的echo方法会调用js对echo事件的绑定function。
    在IE中依旧没有反应。
 [4]测试插件属性的存取,
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值