NPVariant到字符串数组

l.t*_*e.a 1 npapi

我想将一个字符串数组传递给NPAPI插件.如何将NPVariant转换为字符串数组?

tax*_*ian 6

看起来你正在接受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".

希望这可以帮助