Как получить объект JS в интегрированной структуре хрома (CEF)?

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

For example I run a script using ExecuteJavaScript()

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

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

2
nl ja de

1 ответы

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

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

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

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

4
добавлено
Получена точка останова на GetV8Context в строке cef_v8context_t * retval = struct -> get_v8context (struct_); в frame_ctocpp.cc. Все до контекста становится хорошо. Я пытаюсь использовать его внутри функции обратного вызова win32. Может быть, у вас есть идеи?
добавлено автор Max Yari, источник
Да, но как я могу ввести его, если я даже не могу получить контекст для ввода ... кажется, что мне нужно использовать onContextCreated() OVERRIDE, который будет триггером emmidietly, когда контекст создан и выполнит мое грязное присвоение значения Там, только предположение, как это работает, постарается и надеюсь, что я не ошибаюсь на этот раз.
добавлено автор Max Yari, источник
* mean не может получить контекстный объект сам ...
добавлено автор Max Yari, источник
@SinnerSmile - Прошло некоторое время с тех пор, как я сделал что-то с этим, но у меня есть что-то вроде EnterContext/ExitContext в браузере, который вам нужен, если вы звоните из сомнительного состояния JS ...
добавлено автор Aaron, источник
pro.cxx
pro.cxx
3 049 участник(ов)

C/C++ chat 0. Простые вопросы, лабы и о IDE — в чат новичков @supapro 1. Не хамим, не переходим на личности, не вбрасываем утверждения без доказательств 2. No Ads, offtop, flood Объявления о вакансиях и евенты - в лс @AlexFails https://t.me/ProCxx/259155

supapro.cxx
supapro.cxx
1 925 участник(ов)

Чат для тех, кто немного знает C++, простые вопросы по реализации, синтаксису и ide – сюда, а для другого есть: /Главный чат по серьезным вопросам — @ProCxx /Чат по обсуждению всего — @fludpac

C++ Russia
C++ Russia
384 участник(ов)

Сообщество разработчиков C++ в Telegram.

cxx.Дискуссионная
cxx.Дискуссионная
298 участник(ов)

это не двач, общайтесь вежливо; разговор на почти любые темы; Не согласны с баном? В лс @AlexFails, @ivario

C++ для маленьких и тупых
C++ для маленьких и тупых
105 участник(ов)

Лоу левел (по среднему IQ участников) чатик ExtremeCode @extremecode Флудилка @extremecode_rest