NPVariant到字符串数组

时间:2009-12-13 10:58:15

标签: npapi

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

2 个答案:

答案 0 :(得分:6)

看起来你正在接受jldupont建议的其他指示。将数组作为参数传递给属性或方法时:

var arrayData = [1,2,3,4,5];
plugin.someProperty = arrayData;
// -or-
plugin.callSomeMethod(arrayData);

该参数将作为NPVariantType_Object类型的NPVariant到达NPObject。然后查询length属性:

NPObject *inObject = val->value.objectValue;
NPVariant npvLength;
NPN_GetProperty(npp, inObject, NPN_GetStringIdentifier("length"), &npvLength);

然后你只需要一个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
}

类似地,如果你需要将一个数组返回给javascript,另一个选项(除了编写一个模拟对象的方法,就像我在jldupont链接到的线程中所建议的那样)是使用NPN_GetValue来获取DOM的NPObject窗口,然后调用“数组”,没有参数。这将返回一个空的JS Array对象(作为NPObject *)。然后,您只需遍历要返回的项目,并使用该项目作为第一个(也是唯一的)参数调用“push”。

希望这有帮助

答案 1 :(得分:2)

您可以使用NPObject(请参阅此thread)充当字符串的容器(非常类似于var arrayOfString={...strings here...}的JS对象。