NPNInvoke - 将插件数据传递回浏览器

时间:2011-06-30 10:44:07

标签: npapi

我使用NPAPI在Javascript中回调一个对象。在此调用之前,我调用的函数会导致在JavaScript中正确调用函数,但在NPN_Invoke调用中失败。

代码段:

sBrowserFuncs->releaseobject(object_temp);
object_temp = NPVARIANT_TO_OBJECT(args[0]);
sBrowserFuncs->retainobject(object_temp);

if (send_msg1(sBrowserFuncs, instance, msg_rcv, NPVARIANT_TO_OBJECT(args[0]), msg, name_id))

sendmsg1产生一个新线程,这个线程回调msg_rcv。产生的线程是否可以调用主线程函数,这是错误的原因。 ... 她对NPN_Invoke的呼召叫做

NPVariant from;

STRINGZ_TO_NPVARIANT(sdata->from, from);
NPIdentifier methodId = NPN_GetStringIdentifier("new_msg");
int res = NPN_Invoke(sdata->instance, object_temp, methodId, &from, 1, &result);

sdata->instanceinstance匹配 object_temp最后称为对象存储

它返回0,而在成功的情况下它返回1.

在这种情况下NPN_Invoke生成0,

1 个答案:

答案 0 :(得分:2)

据我所知,任何NPN_ *调用都应该从插件线程发出。您可以查看NPN_PluginThreadAsyncCall。我通过这种方式你可以在主/插件线程上从另一个线程执行方法,避免一个令人讨厌的崩溃:)