我必须实现HTML5 AsyncFileAPI
使用普通NPAPI
。还有回调机制微软游戏手柄重要事件。如何实现异步NPAPI插件
问题我面临的是如何实现threadcallasync
,并且无缝地将数据从简单的NPAPI插件发送到JavaScript。一些有用的链接或工作代码将不胜感激。我是NPAPI插件中的新成员。 threadcallasync我必须在Linux中实现,已经看到一些在Windows中实现的链接。
我必须实现HTML5 AsyncFileAPI
使用普通NPAPI
。还有回调机制微软游戏手柄重要事件。如何实现异步NPAPI插件
问题我面临的是如何实现threadcallasync
,并且无缝地将数据从简单的NPAPI插件发送到JavaScript。一些有用的链接或工作代码将不胜感激。我是NPAPI插件中的新成员。 threadcallasync我必须在Linux中实现,已经看到一些在Windows中实现的链接。
我肯定会推荐使用FireBreath来创建你的插件;它会为你解决大部分难题,你可以在how to do async calls上找到教程。
如果您选择不这样做,基本上只需传递一个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,而且我有点偏见。
(只因为我有偏见并不意味着我错了)
祝你好运!
非常感谢你的出纳员。我必须只使用普通的NPAPI,Firebreadth我已经实现了异步调用。简单NPAPI如何做到像调用特定线程一样的firebreadth,并将回调包装在JSObjectPtr中。再次感谢。 –