Как выполнить определенный пользователем код javascript с помощью spidermonkey

У меня есть следующий код javascript в виде строки

std::string script = "{ function execute() { var x=10; return x; } } ";

Я хочу оценить этот скрипт и вернуть значение, есть ли способ сделать это?

Заранее спасибо.


person Charzhard    schedule 30.01.2013    source источник


Ответы (1)


Для оценки JS-скрипта вам понадобится

JSBool JS_EvaluateScript(JSContext *cx, JSObject *obj, const char *src, uintN length, const char *filename, uintN lineno, jsval *rval);

Как описано здесь: https://developer.mozilla.org/en-US/docs/SpiderMonkey/JSAPI_Reference/JS_EvaluateScript

Затем, если вы хотите получить возвращаемое значение, вам нужно вызвать функцию exectue:

"function execute(){ var x = 10; return x;} execute();"

Затем для оценки сценарий должен быть типа const char*, а не std::string.

После оценки сценария вы можете получить возвращаемое значение, используя rval

if(JSVAL_IS_INT(rval))
  printf("The returned value is : %d\n", JSVAL_TO_INT(rval));
person rednaks    schedule 09.04.2013