Je voudrais passer un tableau de chaînes à un plugin NPAPI. Comment puis-je convertir NPVariant en un tableau de chaînes?NPVariant to string array
Répondre
On dirait que vous allez l'autre diretction de ce jldupont suggéré. Quand vous passez un tableau en tant que paramètres soit une propriété ou une méthode.
var arrayData = [1,2,3,4,5];
plugin.someProperty = arrayData;
// -or-
plugin.callSomeMethod(arrayData);
Ce paramètre arriver à votre NPObject comme NPVariant de type NPVariantType_Object vous vous interrogez la propriété de longueur:
NPObject *inObject = val->value.objectValue;
NPVariant npvLength;
NPN_GetProperty(npp, inObject, NPN_GetStringIdentifier("length"), &npvLength);
puis vous faites juste une boucle pour obtenir toutes les valeurs:
for (uint32_t i = 0; i < npvLength.value.intValue; i++) {
NPVariant curValue;
NPN_GetProperty(npp, inObject, NPN_GetIntIdentifier(i), &curValue);
// Do something with curValue
}
De même, si vous avez besoin de retourner un tableau à javascript, une autre option (autre que d'écrire une méthode pour émule un objet, comme je l'ai suggéré dans le thread que jldupont lié à) est d'utiliser NPN_GetValue pour obtenir le NPObject pour la fenêtre DOM, puis invoquer "Array" sur elle sans paramètres. Cela retournera un objet JS Array vide (en tant que NPObject *). Ensuite, il vous suffit de faire défiler les éléments que vous souhaitez renvoyer et d'appeler "push" avec l'élément en tant que premier (et seul) paramètre. J'espère que cela aidera
Vous pouvez utiliser un NPObject (voir ce thread) pour agir en tant que conteneur pour vos cordes (un peu comme un objet JS avec var arrayOfString={...strings here...}
.
Je voulais aller dans l'autre sens; de JS au plugin. Merci pour la contribution cependant, cela m'a donné des indices très utiles. –
- 1. Byte [] Array to String
- 2. JavaScript Array to String
- 3. String to Array and Back
- 4. PHP Array to String équivalent
- 5. Array Array to Object Array
- 6. JRuby Array to Java Array
- 7. string array in c
- 8. String Array Thing!
- 9. struts String array order
- 10. Byte Array to Double Array
- 11. Chaîne à array ou Array to string conseils sur les formats, etc
- 12. SOAP to Stream to String
- 13. Service WCF - OperationContract - string array
- 14. PHP xmlreader to array
- 15. byte array to double
- 16. xsl to php array
- 17. SimpleXMLElement to PHP Array
- 18. Facebook Graph to Array
- 19. javascript array to php
- 20. push to array vb.net 2008
- 21. linq to XML string
- 22. RegEx to Tokenize String
- 23. SimpleXml to string
- 24. RHTML to string - rails
- 25. JSON Object to String
- 26. Fichier [] to String []
- 27. Tuple to string
- 28. Uri to URLencoded string
- 29. .NET DateTime to String
- 30. From String to Blob
Incidemment, le projet open source FireBreath (http://firebreath.googlecode.com) prend soin de tout cela pour vous, en plus de fournir une abstraction pour qu'il fonctionne également sur IE. (Je suis l'un des principaux mainteneurs de FireBreath) – taxilian
La page web de FireBreath a été déplacée sur http://www.firebreath.org – taxilian