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

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

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

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

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

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));
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]