我想将字符串数组传递给 NPAPI 插件。如何将NPVariant转换为字符串数组?
问问题
3368 次
2 回答
6
看起来你正朝着 jldupont 建议的另一个方向发展。当您将数组作为参数传递给属性或方法时:
var arrayData = [1,2,3,4,5];
plugin.someProperty = arrayData;
// -or-
plugin.callSomeMethod(arrayData);
该参数将作为 NPVariantType_Object 类型的 NPVariant 到达您的 NPObject。然后查询长度属性:
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,并且然后在没有参数的情况下对其调用“Array”。这将返回一个空的 JS 数组对象(作为 NPObject*)。然后,您只需遍历要返回的项目并使用该项目作为第一个(也是唯一的)参数调用“push”。
希望这可以帮助
于 2009-12-24T18:07:58.277 回答
2
您可以使用 NPObject(请参阅此线程)作为字符串的容器(很像带有var arrayOfString={...strings here...}
.
于 2009-12-13T11:36:59.403 回答