all.I要调用一个js函数来显示东西在我的plugin.This是我的代码safari中的NPAPI插件无法调用js函数?
NPObject* npwindow = NULL;
NPError ret = browser->getvalue(mInstanceForJS, NPNVWindowNPObject, &npwindow);
if (ret != NPERR_NO_ERROR)
return ;
// Get window object.
NPVariant windowVar;
NPIdentifier winID = browser->getstringidentifier("window");
bool bRet = browser->getproperty(mInstanceForJS, npwindow, winID, &windowVar);
if (!bRet)
{
browser->releaseobject(npwindow);
return ;
}
NPObject* window = NPVARIANT_TO_OBJECT(windowVar);
NPVariant voidResponse;
NPVariant elementId;
STRINGZ_TO_NPVARIANT([info UTF8String], elementId);
NPVariant args[] = {elementId};
NPIdentifier funcID= browser->getstringidentifier([funName UTF8String]);
bRet = browser->invoke(mInstanceForJS, window, funcID, args, 1, &voidResponse);
browser->releasevariantvalue(&windowVar);
时调用BRET =浏览器的>调用(mInstanceForJS,窗口,FUNCID,ARGS,1,& voidResponse);,Safari无法回应。是否有错误?
感谢taxilian.I提醒我的代码,因为你说。但它只能在safari 5中正确运行。当在Safari 6中运行时,** browser-> invoke(mInstanceForJS,window,funcID,args,1,&voidResponse); **永远不会完成。 ** info **是一个XML格式的字符串。 – Magical
请重新阅读我的回复并提供问题的答案,我问 – taxilian
对不起,调用函数一直在运行,就像一个死循环一样。 **您的意思是“Safari无法响应”,它是否挂起?** --- Safari被禁用并正在等待调用函数。 ** bRet是否为false?** --- invoke函数正在运行,因此bRet无法获得值。 **您的电脑是否突然被冰封住,从而停止所有处理?** ---除Safari之外,所有应用程序均可正常运行。 – Magical