看起来你正在接受jldupont建议的其他指示.将数组作为参数传递给属性或方法时:
var arrayData = [1,2,3,4,5];
plugin.someProperty = arrayData;
// -or-
plugin.callSomeMethod(arrayData);
Run Code Online (Sandbox Code Playgroud)
该参数将作为NPVariantType_Object类型的NPVariant到达NPObject.然后查询length属性:
NPObject *inObject = val->value.objectValue;
NPVariant npvLength;
NPN_GetProperty(npp, inObject, NPN_GetStringIdentifier("length"), &npvLength);
Run Code Online (Sandbox Code Playgroud)
然后你只需要一个for循环来获取所有值:
for (uint32_t i = 0; i < npvLength.value.intValue; i++) {
NPVariant curValue;
NPN_GetProperty(npp, inObject, NPN_GetIntIdentifier(i), &curValue);
// Do something with curValue
}
Run Code Online (Sandbox Code Playgroud)
同样,如果您需要返回数组的JavaScript,另一种选择(不是编写方法等效仿的对象,因为我在jldupont链接到线程建议)是使用NPN_GetValue得到NPObject的DOM窗口,然后在没有参数的情况下调用"Array".这将返回一个空的JS Array对象(作为NPObject*).然后,您只需遍历要返回的项目,并使用该项目作为第一个(也是唯一的)参数调用"push".
希望这可以帮助
| 归档时间: |
|
| 查看次数: |
3338 次 |
| 最近记录: |