2012-07-30 88 views
0

我正在为嵌入式原生浏览器(Linux)开发NPAPI插件。我想要一个来自javascript的回调函数,它将调用我的插件中的回调函数。根据按键盘按键产生的事件。我必须不断地将事件发送到浏览器窗口。我对这个需求帮助完全陌生。如何在NPAPI插件中实现回调函数

在此先感谢。

回答

2

如果您使用的是FireBreath,则documentation on firing events已经涵盖此项。

如果你正在编写一个简单的NPAPI插件,插件应该实现addEventListener(type, listener, ...) & removeEventListener()
正如你已经知道如何添加脚本功能到你的插件,你只需要添加这两个支持。

对于addEventListener()将得到以下参数:

  • type - 应该是标识事件的字符串
  • listener - 应该是一个对象,保留&店呢
  • useCapture - 应是布尔值,可选(如果不存在)假定false

要储存你可以听到的听众使用multimap<SomeStringType,NPObject*>成员,将事件字符串用作键,将侦听器对象用作值。别忘了retain的听众。

触发事件然后您得到equal_range(),并使用NPN_InvokeDefault()与侦听器对象。

removeEventListener()接收相同的参数addEventListener(),你应该再erase()该事件的字符串指定的监听器。不要忘记release侦听器对象。

为了兑现useCapture相应地扩展了上述内容。

+0

我正在使用普通NPAPI,请你举例说明。如何添加事件侦听器并激活所有存储的侦听器NPN_InvokeDefault()的默认方法。如有可能,请提供任何链接。提前致谢。 – 2012-07-31 02:22:32

+1

@r_tex,你读过了吗?[本教程提供了与JS的接口](http://colonelpanic.net/2009/08/building-a-firefox-plugin-part-three/)? – 2012-07-31 17:43:29

+0

谢谢,对于链接是的,我已经通过这个链接,并实现已经工作的插件,我可以从JavaScript调用插件方法。流程如下 - >创建一个从NPObject派生的类ScriptablePluginObjectBase,然后创建一个从ScriptablePluginObjectBase派生的类ScriptablePluginObject,内部ScriptablePluginObject的invoke方法我调用从JavaScript调用的方法。对不起,我是新手,可以告诉我如何编写addEventListener,removeEventListener,并向每个列表中添加/删除监听参数(NP Object)。 – 2012-08-01 16:43:28