2011-08-31 123 views
1

在我的C++應用程序中使用嵌入式SpiderMonkey我想從JavaScript代碼中提取所有字符串。 JavaScript代碼看起來是這樣的:從JavaScript代碼中提取字符串

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

C++代碼如下所示:

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

所以我的問題是,SpiderMonkey的執行JavaScript之後,我怎麼能提取變量酒吧(提取的字符串值應該是「美麗的東西」),並在我的常規C++代碼中使用它?我想我必須先評估腳本,然後以某種方式從JavaScript變量中提取字符串。我不知道如何使用SpiderMonkey提取字符串。

我的第二個問題:
http://siliconforks.com/doc/parsing-javascript-with-spidermonkey/
這SpiderMonkey的JavaScript分析器是爲SpiderMonkey的1.6編寫。 因爲 解析的API已經改變,所以最新的SpiderMonkey可以做到這一點?

日Thnx提前,
戈蘭

+0

請在你需要提取的背景更清晰。如果您正在討論將客戶端JS變量的內容傳遞給服務器端C++,則需要使用http(ajax,form)將變量發送到服務器 – mplungjan

+0

@mplungjan我不是很精確。我在我的C++應用程序中嵌入了SpiderMonkey。短片段:char * script =「var foo ='some string'」; ok = JS_EvaluateScript(cx,全局,腳本,strlen(腳本),文件名,lineno,&rval);如何獲得JavaScript變量foo的值? – Goran

+0

請更新您的問題 – mplungjan

回答

0

由於酒吧是全局對象的屬性,則JS_EvaluateScript(之後)我可以使用JS_GetProperty()函數,像這樣

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

上面的例子不再使用最新的Mozilla JavaScript版本38或更新版本(包括'js'和'xpcshell') –

-1

檢查字符串操作功能,如串。它可以用來解決你的查詢。

+0

substring。不是子字符串 - 和我懷疑這是他所需要的。 – mplungjan