JS/NPAP之间传递数组:NPVARIANT_TO_OBJECT/OBJECT_TO_NPVARIANT
从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相关推荐
- 大叔也说Xamarin~Android篇~Activity之间传递数组
大叔也说Xamarin~Android篇~Activity之间传递数组 原文:大叔也说Xamarin~Android篇~Activity之间传递数组 我们在开发应用程序时,不可能只使用一个Layout ...
- vue.js 组件之间传递数据 1
vue.js 组件之间传递数据 框架 浏览数:437 2017-8-21 组件是 vue.js 最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用.如何传递数据 ...
- js通过Ajax传递数组
只需要在参数后面加 "" 就可以传递数组了 function sendArray() {var strArray = ["A","B",&q ...
- vue.js 组件之间传递数据
前言 组件是 vue.js 最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用.如何传递数据也成了组件的重要知识点之一. 组件 组件与组件之间,还存在着不同的关 ...
- 采用curl库在PHP程序之间传递数组
最近在工作中遇到一个问题:a.php程序需要将接收到的数据同时写到"线上运行的正式数据库"和"进行开发调试的测试数据库".而测试数据库可能经 常会面临对表结构. ...
- JS Typed Array 定型数组
定型数组(typed array)是一种类似数组的对象,提供了一种用于在内存缓冲区中访问原始二进制数据的机制,可以提升向原生库传输数据的效率. 历史由来 随着浏览器的流行,人们期待通过它来运行复杂的 ...
- Js传递数组参数到后台controller的方式
分享一篇js传递数组参数到后台controller的方法,具有很好的参考价值,希望对大家有所帮助. 传递参数传递字符串,所以要把数组转换为字符串, var arr=[1,23,34,5]; var s ...
- HTML页面之间传递Json格式数组的方式
HTML页面之间传递Json格式数组的方式 如下: a.html localStorage.setItem("userinfoList", JSON.stringify(list) ...
- js中字符串与数组之间的转换
本文实例介绍了javascript中字符串和数组的相互转换方法,分享给大家供大家参考,具体内容如下 字符串和数组的相互转换操作是非常的重要的,因为在实际编码过程中会经常用到,所以这是必须要掌握的知识点 ...
- JS AJAX传递数组的方法
在用ajax传递数组时一开始用的是 $.post({url:'delEmployee',data:{'ids':ids},success:function(){}}}) 后台无法接收,浏览器报错 后来 ...
最新文章
- 一步一步CCNA之六:交换机vtp配置
- 成功解决AttributeError: 'list' object has no attribute 'ndim'
- 题目3:文本文件单词的检索与计数(实现代码)
- USACO 1.2 挤牛奶
- excel中定义VBA
- extern 使用方法具体解释
- [20170927]关于hugepages.txt
- PHP RSS/Feed 生成类库(支持RSS 1.0/2.0和ATOM)
- FCFS,SJF,HRRN调度算法
- 360浏览器清除缓存_手机中的缓存是什么?
- access ok linux,使用linux宏access_ok()有什么意义
- MySQL-第三篇SQL语句基础(2)数据库约束
- DSP28335定时器
- java 模拟ping_模拟Ping操作的一个Java类
- BeanUtils工具类常用方法
- 视频教程-Mikrotik RouterOS 软路由基础教程-网络技术
- 关于csdn 博客图片无法加载的问题!
- notepad++ JSON Viewer插件手动安装失败解决方案
- 哈工大计算机科学与捄术学院,[哈尔滨工业大学]管理科学与工程
- MySQL大表DDL工具gh-ost
热门文章
- mysql临时表多线程时能用吗_学会使用临时表优化,切记不要乱用临时表(记录一)...
- 记录平台调用支付中心接口
- springboot的多数据源配置(多库/主从等等场景)
- Linux系统管理初步(六)设置计划任务
- webpack ,require.ensure配合oclazyload 实现ng1模块懒加载
- 初识 asp.net mvc(二)
- eclipse 搭建python环境
- R语言的cpp扩展支持Rcpp模块介绍
- 一起谈.NET技术,ASP.NET MVC Routing概述
- 李阳疯狂英语900句 121-330