如何在NPAPI插件中实现回调函数

时间:2012-07-30 18:42:48

标签: npapi browser-plugin

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

提前致谢。

1 个答案:

答案 0 :(得分: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,请相应地扩展上述内容。