我收到一个 JavaScript 错误:Error calling method on NPObject
在 XP 上的 Chrome 和 Firefox 中调用我的 NPAPI 插件中的方法时。在 Windows 7 上使用相同的浏览器运行相同的代码是成功的。
我已经使用 NPAPI 构建了一个 Scriptable 插件,到目前为止,我可以调试到Invoke
我的 Scriptable 对象的方法。但我不相信它完成后我有任何控制权。
有没有人有任何想法?这是否仅在 Windows XP 中存在?
bool MY_ScriptableObject::Invoke(NPObject* npobj,
NPIdentifier name,
const NPVariant* args,
uint32_t argCount,
NPVariant* result)
{
bool rc = true;
char* wptr = NULL;
rc = false;
wptr = NULL;
if (name == NPN_GetStringIdentifier("getVersion"))
{
wptr = (NPUTF8*)NPN_MemAlloc(strlen("version:1.0.1") + 1); //Should be freed by browser
if (wptr != NULL)
{
rc = true;
memset(wptr,
0x00,
strlen("version:1.0.1")+1);
memcpy(wptr,
"version:1.0.1",
strlen("version:1.0.1"));
STRINGZ_TO_NPVARIANT(wptr,
*result);
}
}
return (rc);
}
这是我正在执行的 HTML 函数:
function Version()
{
var plugin = document.getElementById("plugin");
if (plugin == undefined)
{
alert("plugin failed");
return;
}
var text = plugin.getVersion(); //Error happens at this line
alert(text);
}