1

我必须HTML5 AsyncFileAPI使用 plain来实现NPAPI。微软游戏手柄按键事件的回调机制。

我面临的问题是如何threadcallasync从普通的 NPAPI 插件实现并无缝地将数据发送到 javascript。一些有用的链接或工作代码将不胜感激。我是 NPAPI 插件的新手。threadcallasync我必须在 Linux 中实现,已经看到了一些在 windows 中实现的链接。

4

1 回答 1

2

我肯定会推荐使用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 的大部分内容并且我有点偏见。

(仅仅因为我有偏见并不意味着我错了)

祝你好运!

于 2012-08-24T05:09:18.833 回答