Frage

Ich möchte ein Array von Strings zu einem NPAPI Plugin zu übergeben. Wie konvertiere ich NPVariant auf ein Array von Strings?

War es hilfreich?

Lösung

Sieht aus wie Sie die andere diretction aus gehen, was vorgeschlagen jldupont. Wenn übergeben Sie ein Array in als Parameter entweder auf eine Eigenschaft oder eine Methode:

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

wird dieser Parameter auf Ihre NPObject als NPVariant vom Typ NPVariantType_Object bekommen. Sie fragen dann die Länge Eigenschaft:

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

und dann tun Sie einfach eine for-Schleife alle Werte zu erhalten:

for (uint32_t i = 0; i < npvLength.value.intValue; i++) {
    NPVariant curValue;
    NPN_GetProperty(npp, inObject, NPN_GetIntIdentifier(i), &curValue);
    // Do something with curValue
}

Und falls Sie ein Array Javascript zurückkommen müssen, eine weitere Option (andere als ein Verfahren zu schreiben, ein Objekt zu emulieren, wie ich in dem Thread vorgeschlagen, auf welche verwiesen jldupont) ist NPN_GetValue zu verwenden, um die NPObject für das DOM zu erhalten Fenster und ohne Parameter Invoke „Array“ auf es dann. Dadurch wird ein leeres JS Array-Objekt (als NPObject *) zurückzukehren. Dazu einfach eine Schleife durch die Elemente, die Sie zurückgeben mögen und rufen „Push“ mit dem Elemente als die ersten (und einzigen) Parameter.

Hope, das hilft

Andere Tipps

Sie können einen NPObject verwenden (siehe diese Faden rel="nofollow ) zu handeln, als Behälter für die Saiten (ähnlich wie ein JS-Objekt mit var arrayOfString={...strings here...}.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top