我正在为嵌入式原生浏览器(Linux)开发NPAPI插件。我想要一个来自javascript的回调函数,它将调用我的插件中的回调函数。根据按键盘按键产生的事件。我必须不断地将事件发送到浏览器窗口。我对这个需求帮助完全陌生。如何在NPAPI插件中实现回调函数
在此先感谢。
我正在为嵌入式原生浏览器(Linux)开发NPAPI插件。我想要一个来自javascript的回调函数,它将调用我的插件中的回调函数。根据按键盘按键产生的事件。我必须不断地将事件发送到浏览器窗口。我对这个需求帮助完全陌生。如何在NPAPI插件中实现回调函数
在此先感谢。
如果您使用的是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
相应地扩展了上述内容。
我正在使用普通NPAPI,请你举例说明。如何添加事件侦听器并激活所有存储的侦听器NPN_InvokeDefault()的默认方法。如有可能,请提供任何链接。提前致谢。 – 2012-07-31 02:22:32
@r_tex,你读过了吗?[本教程提供了与JS的接口](http://colonelpanic.net/2009/08/building-a-firefox-plugin-part-three/)? – 2012-07-31 17:43:29
谢谢,对于链接是的,我已经通过这个链接,并实现已经工作的插件,我可以从JavaScript调用插件方法。流程如下 - >创建一个从NPObject派生的类ScriptablePluginObjectBase,然后创建一个从ScriptablePluginObjectBase派生的类ScriptablePluginObject,内部ScriptablePluginObject的invoke方法我调用从JavaScript调用的方法。对不起,我是新手,可以告诉我如何编写addEventListener,removeEventListener,并向每个列表中添加/删除监听参数(NP Object)。 – 2012-08-01 16:43:28