首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从NPAPI/NPRuntime插件返回的NPVariant字符串中有额外的垃圾。

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

Stack Overflow用户
提问于 2011-03-08 05:58:30
回答 1查看 1K关注 0票数 0

下面是我试图从javascript中做的事情:

代码语言:javascript
复制
var result;
result = document.myplugin.GetClientName();
document.write(result);

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

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

EN

回答 1

Stack Overflow用户

发布于 2011-03-08 06:59:34

嗯..。做得对吗?您没有提供任何示例代码,也没有说明如何分配NPVariant;这使您很难帮助您,我的朋友。

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

确保分配内存并复制字符串;如果您试图从std::string或其他东西传入内存,则很可能在使用它之前释放它,这很容易导致问题。还记得在字符串的末尾为空字符分配一个额外的字节--记住C字符串是空终止的,尽管NPAPI规范说您只需要设置UTF8Length,但我仍然看到火狐特别期望一个空终止字符串,如果不给它,行为会很奇怪。

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

  • NPAPI中的内存管理

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

有关FireBreath与脚本一起使用的方法的一些信息,请参阅我的博客上关于这个主题的文章

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5228917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档