我必须HTML5 AsyncFileAPI
使用 plain来实现NPAPI
。微软游戏手柄按键事件的回调机制。
我面临的问题是如何threadcallasync
从普通的 NPAPI 插件实现并无缝地将数据发送到 javascript。一些有用的链接或工作代码将不胜感激。我是 NPAPI 插件的新手。threadcallasync我必须在 Linux 中实现,已经看到了一些在 windows 中实现的链接。
我必须HTML5 AsyncFileAPI
使用 plain来实现NPAPI
。微软游戏手柄按键事件的回调机制。
我面临的问题是如何threadcallasync
从普通的 NPAPI 插件实现并无缝地将数据发送到 javascript。一些有用的链接或工作代码将不胜感激。我是 NPAPI 插件的新手。threadcallasync我必须在 Linux 中实现,已经看到了一些在 windows 中实现的链接。
我肯定会推荐使用FireBreath来创建你的插件;它会为您解决大部分难题,您可以找到有关如何进行异步调用的教程。
如果你选择不这样做,基本上你只需要传入一个 javascript 函数,在 NPAPI 中它将是一个 NPObject,然后当你的操作完成时,在回调 NPObject 上使用 NPN_InvokeDefault。当然,您需要在主线程上执行此操作,这将需要某种方法向主线程发送消息以告诉它进行调用。
一般来说 NPN_PluginThreadAsyncCall 就是这样做的;你给它一个函数指针和一个 void* 以及你需要的数据,它会在主线程上调用你的函数。不幸的是,windows 和 mac 上的 Safari 5.1 似乎已经放弃了对这个功能的支持。Windows 上的替代方法是使用 LPARAM 中的不透明指针创建消息 HWND 和 PostMessage。在 Mac 上,您可以只使用 PerformSelectorOnMainThread 或 NSTimer。我不确定如何在linux上做到这一点。
当然,FireBreath 会为您处理所有这些,只需将回调包装在可以从任何线程调用的 JSObjectPtr 中……您调用它,firebreath 将为您在正确的线程上进行调用。它也可以在 IE 上运行......但这取决于你。我尝试给出其他选择,因为我写了 FireBreath 的大部分内容并且我有点偏见。
(仅仅因为我有偏见并不意味着我错了)
祝你好运!