gpt4 book ai didi

javascript - 从 NPAPI/NPRuntime 插件返回的 NPVariant 字符串中有额外的垃圾

转载 作者:行者123 更新时间:2023-12-02 20:23:17 24 4
gpt4 key购买 nike

这是我尝试通过 javascript 执行的操作:

var result;
result = document.myplugin.GetClientName();
document.write(result);

“GetClientName”应使用字符串向浏览器返回 NPVariant。我得到的输出末尾附加了垃圾。

有人对如何解决这个问题有任何建议吗?

最佳答案

嗯...做得正确吗?您没有提供任何示例代码,也没有解释如何分配 NPVariant;这让我很难帮助你,我的 friend 。

基本上你只需要创建一个 NPVariant,使用 NPN_MemAlloc 为其分配足够的内存。 ,并将指针分配给 NPString 的 UTF8Characters 字段NPVariant 联合内的长度和 UTF8Length 的长度。

确保分配内存并复制字符串;如果您尝试从 std::string 或其他内容传递内存,它可能会在使用之前被释放,这很容易导致问题。还要记住在字符串末尾为 NULL 字符分配一个额外的字节——记住 C 字符串是以 NULL 结尾的,虽然 NPAPI 规范说你只需要设置 UTF8Length,但我仍然见过 Firefox 的情况特别是需要一个以 NULL 结尾的字符串,如果您不给它一个,则行为会很奇怪。

如果您想走这条路,您可能会发现这篇博客文章很有帮助:

但是,我可以建议一条更简单的路线吗?编写 NPAPI 插件并不是一件简单的事情,需要大量的经验和研究才能做得好且安全。如果您使用FireBreath您可以在 C++ 框架上编写 NPAPI 插件,该框架已经为您完成了所有这些工作,并允许您使用普通的 C++ STL 数据类型,在多个平台上工作,并且通常可以为您节省大量时间和麻烦。

有关 FireBreath 使用脚本编写的方法的一些信息,请参阅 my blog post on the subject .

关于javascript - 从 NPAPI/NPRuntime 插件返回的 NPVariant 字符串中有额外的垃圾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5228917/

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