从NPAPI中返回数组,代码要这样写。已经过本人测试:

// 这个写法看起来怪异,可是必须这样写!
// Get window object.
NPObject* pWindow = NULL;
NPN_GetValue(mNpp, NPNVWindowNPObject, &pWindow);//Get NPVariant
char buf[16]="Array()";
NPString str;
str.UTF8Characters = buf;
str.UTF8Length = strlen(buf);NPVariant arrayVar;
NPN_Evaluate(mNpp, pWindow, &str, &arrayVar);//或者使用for循环处理。
//如果使用malloc,记得释放内存。
NPVariant values[2];
INT32_TO_NPVARIANT(123, values[0]);
NPN_SetProperty(mNpp, arrayVar.value.objectValue, NPN_GetIntIdentifier(0), &(values[0]));INT32_TO_NPVARIANT(456, values[1]);
NPN_SetProperty(mNpp, arrayVar.value.objectValue, NPN_GetIntIdentifier(1), &(values[1]));OBJECT_TO_NPVARIANT(arrayVar.value.objectValue, *result);

这是另外一段代码。经过测试返回时会出错。

std::vector<NPVariant> vect;//容器
for (int i = 0; i < 2000; i++) {NPObject* _stream = nullptr;NPObject::CreateInstanceWithRef(m_npp, &_stream);//创建对象NPVariant var;OBJECT_TO_NPVARIANT(_stream, var);BrowserFuncs->retainobject(var.value.objectValue); // will be release by "NPVecClear()"vect.push_back(var);NPObject::ReleaseInstance(&_stream);//
}
NPObject* arrayObj = NULL;
Utils::CreateJsArray(m_npp, vect, &arrayObj);//通过设置属性的方式
OBJECT_TO_NPVARIANT(arrayObj, *result);//输出给js
Utils::NPVecClear(vect);

以下两段代码是分解从JS得到的数组。没有测试。

NPObject *inObject = val->value.objectValue;
NPVariant npvLength;
NPN_GetProperty(npp, inObject, NPN_GetStringIdentifier("length"), &npvLength);
and then you just do a for loop to get all the values:for (uint32_t i = 0; i < npvLength.value.intValue; i++) {NPVariant curValue;NPN_GetProperty(npp, inObject, NPN_GetIntIdentifier(i), &curValue);// Do something with curValue
}

代码:


输入数组
NPObject *inObject = args->value.objectValue;
NPVariant npvLength;
NPN_GetProperty(mNpp, inObject, NPN_GetStringIdentifier("length"), &npvLength);
for (uint32_t i = 0; i < npvLength.value.intValue; i++) {NPVariant curValue;NPN_GetProperty(mNpp, inObject, NPN_GetIntIdentifier(i), &curValue);// Do something with curValue
}

JS/NPAP之间传递数组:NPVARIANT_TO_OBJECT/OBJECT_TO_NPVARIANT相关推荐

  1. 大叔也说Xamarin~Android篇~Activity之间传递数组

    大叔也说Xamarin~Android篇~Activity之间传递数组 原文:大叔也说Xamarin~Android篇~Activity之间传递数组 我们在开发应用程序时,不可能只使用一个Layout ...

  2. vue.js 组件之间传递数据 1

    vue.js 组件之间传递数据 框架 浏览数:437 2017-8-21 组件是 vue.js 最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用.如何传递数据 ...

  3. js通过Ajax传递数组

    只需要在参数后面加 "" 就可以传递数组了 function sendArray() {var strArray = ["A","B",&q ...

  4. vue.js 组件之间传递数据

    前言 组件是 vue.js 最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用.如何传递数据也成了组件的重要知识点之一. 组件 组件与组件之间,还存在着不同的关 ...

  5. 采用curl库在PHP程序之间传递数组

    最近在工作中遇到一个问题:a.php程序需要将接收到的数据同时写到"线上运行的正式数据库"和"进行开发调试的测试数据库".而测试数据库可能经 常会面临对表结构. ...

  6. JS Typed Array 定型数组

    定型数组(typed array)是一种类似数组的对象,提供了一种用于在内存缓冲区中访问原始二进制数据的机制,可以提升向原生库传输数据的效率. 历史由来 随着浏览器的流行,人们期待通过它来运行复杂的 ...

  7. Js传递数组参数到后台controller的方式

    分享一篇js传递数组参数到后台controller的方法,具有很好的参考价值,希望对大家有所帮助. 传递参数传递字符串,所以要把数组转换为字符串, var arr=[1,23,34,5]; var s ...

  8. HTML页面之间传递Json格式数组的方式

    HTML页面之间传递Json格式数组的方式 如下: a.html localStorage.setItem("userinfoList", JSON.stringify(list) ...

  9. js中字符串与数组之间的转换

    本文实例介绍了javascript中字符串和数组的相互转换方法,分享给大家供大家参考,具体内容如下 字符串和数组的相互转换操作是非常的重要的,因为在实际编码过程中会经常用到,所以这是必须要掌握的知识点 ...

  10. JS AJAX传递数组的方法

    在用ajax传递数组时一开始用的是 $.post({url:'delEmployee',data:{'ids':ids},success:function(){}}}) 后台无法接收,浏览器报错 后来 ...

最新文章

  1. 一步一步CCNA之六:交换机vtp配置
  2. 成功解决AttributeError: 'list' object has no attribute 'ndim'
  3. 题目3:文本文件单词的检索与计数(实现代码)
  4. USACO 1.2 挤牛奶
  5. excel中定义VBA
  6. extern 使用方法具体解释
  7. [20170927]关于hugepages.txt
  8. PHP RSS/Feed 生成类库(支持RSS 1.0/2.0和ATOM)
  9. FCFS,SJF,HRRN调度算法
  10. 360浏览器清除缓存_手机中的缓存是什么?
  11. access ok linux,使用linux宏access_ok()有什么意义
  12. MySQL-第三篇SQL语句基础(2)数据库约束
  13. DSP28335定时器
  14. java 模拟ping_模拟Ping操作的一个Java类
  15. BeanUtils工具类常用方法
  16. 视频教程-Mikrotik RouterOS 软路由基础教程-网络技术
  17. 关于csdn 博客图片无法加载的问题!
  18. notepad++ JSON Viewer插件手动安装失败解决方案
  19. 哈工大计算机科学与捄术学院,[哈尔滨工业大学]管理科学与工程
  20. MySQL大表DDL工具gh-ost

热门文章

  1. mysql临时表多线程时能用吗_学会使用临时表优化,切记不要乱用临时表(记录一)...
  2. 记录平台调用支付中心接口
  3. springboot的多数据源配置(多库/主从等等场景)
  4. Linux系统管理初步(六)设置计划任务
  5. webpack ,require.ensure配合oclazyload 实现ng1模块懒加载
  6. 初识 asp.net mvc(二)
  7. eclipse 搭建python环境
  8. R语言的cpp扩展支持Rcpp模块介绍
  9. 一起谈.NET技术,ASP.NET MVC Routing概述
  10. 李阳疯狂英语900句 121-330