2011-08-31 3 views
1

En utilisant SpiderMonkey incorporé dans mon application C++, je voudrais extraire toutes les chaînes du code JavaScript. code JavaScript ressemble à ceci:extraction de chaînes à partir du code JavaScript

var foo = "something"; 
var space = " "; 
var bar = foo + space + "beautiful"; 

code C++ ressemble à ceci:

char *script = "var foo = \"something\"; var space = \" \"; var bar = foo + space + \"beautiful\";"; 
ok = JS_EvaluateScript(cx, global, script, strlen(script), filename, lineno, &rval); 

Alors mes questions est, après SpiderMonkey exécute JavaScript, comment puis-je extraire la chaîne de la variable barre (extraite valeur devrait être "quelque chose de beau") et l'utiliser dans mon code C++ régulier? Je suppose que je dois d'abord évaluer le script puis extraire la chaîne de la variable JavaScript. Je ne sais pas comment extraire la chaîne en utilisant SpiderMonkey.

Ma deuxième question:
http://siliconforks.com/doc/parsing-javascript-with-spidermonkey/
Cet analyseur JavaScript SpiderMonkey est écrit pour SpiderMonkey 1.6. Comment cela peut-il être fait avec le dernier SpiderMonkey, car les API pour l'analyse syntaxique ont changé?

Thnx à l'avance,
Goran

+0

S'il vous plaît être plus clair sur le contexte dans lequel vous devez extraire. Si vous parlez de transmettre le contenu des variables JS côté client au serveur C++, vous devez envoyer les vars au serveur en utilisant http (ajax, form) – mplungjan

+0

@mplungjan Je n'étais pas très précis. J'ai intégré SpiderMonkey dans mon application C++. Extrait court: char * script = "var foo = 'une chaîne'"; ok = JS_EvaluateScript (cx, global, script, strlen (script), nom de fichier, lineno, &rval); Comment puis-je maintenant obtenir la valeur de la variable JavaScript foo? – Goran

+0

Veuillez mettre à jour votre question – mplungjan

Répondre

0

Depuis bar est la propriété de l'objet global, après la JS_EvaluateScript() je peux utiliser la fonction JS_GetProperty(), quelque chose comme ça

JS_GetProperty(cx, global, "bar", &rval); 
JSString *str = JS_ValueToString(cx, rval); 
printf("%s\n", JS_EncodeString(cx, str)); 
+0

L'exemple ci-dessus ne fonctionne PLUS avec la dernière version de Mozilla JavaScript 38 ou plus récente (à la fois 'js' et' xpcshell') –

-1

Vérifiez Fonctions de fonctionnement de chaîne comme sousChaîne. Il peut être utilisé pour résoudre votre requête.

+0

sous-chaîne. Je doute que c'est ce dont il a besoin – mplungjan

Questions connexes