gpt4 book ai didi

c++ - 脚本插件 : Error calling method on NPObject

转载 作者:行者123 更新时间:2023-11-28 08:01:52 25 4
gpt4 key购买 nike

我收到 JavaScript 错误:在 NPObject 上调用方法时出错 在 XP 上的 Chrome 和 Firefox 中调用我的 NPAPI 插件中的方法时。使用相同的浏览器在 Windows 7 上运行相同的代码是成功的。

我已经使用 NPAPI 构建了一个 Scriptable 插件,到目前为止,我可以调试到我的可编写脚本对象的 Invoke 方法中。但我不相信完成后我有任何控制权。
有人有什么想法吗?这是否仅在 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);
}

最佳答案

在当前版本的浏览器中,关于 NPAPI 的(讽刺)令人敬畏(/讽刺)的事情是,如果 任何 调用出错,您会自动收到该错误消息,即使插件有其他方式尝试使用 NPN_SetException 设置异常。

我的第一个猜测是您编译的代码针对的是比 Windows XP 更高版本的 Windows;我不确定这是否会产生这个问题。我从未见过您描述的问题,而且我的插件在 xp、vista 和 7 上运行没有问题。您也可以尝试玩 FireBreath插件,看看问题是否出现在那里。

我建议您附加调试器并设置一些断点。从 NPN_GetValue 开始并确保它正在实例化您的 NPObject,然后在您的 NPObject 的 HasMethod 和 Invoke 方法中设置断点并查看命中的内容。可能其中的内容会向您展示实际发生的情况,或者至少告诉您哪些代码受到攻击或未受到攻击。

关于c++ - 脚本插件 : Error calling method on NPObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11231328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com