Как получить JS Object в Chromium Embedded Framework (CEF)?

Можно ли получить ссылку на существующий объект с помощью CEF API?

Например, я запускаю скрипт, используя ExecuteJavaScript()

function foo()
{
var self = this;
self.value="some value";
}
var fooObj = new foo;

Этот скрипт создает новую переменную fooObj, Возможно ли получить ссылку на эту переменную позже в коде C ++ и изменить ее значение?

2

Решение

Вы должны быть в состоянии получить это, выполнив что-то вроде следующего (непроверенного):

    auto context = AppGetBrowser()->GetMainFrame()->GetV8Context();
CefRefPtr<CefV8Value> p = context->GetGlobal()->GetValue(CefString("fooObj"));

Вам может понадобиться войти / выйти из контекста в зависимости от того, откуда вы вызываете его в C ++. Более того, вам может понадобиться явно ссылаться на ваш объект как «window.fooObj», и в этом случае вам придется получить значение для «окна», а затем извлечь из него «fooObj».

(редактировать — случайно отправлено слишком рано)
(редактировать 2 — больше)

4

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

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