Por favor, ayúdenme, he estado sufriendo durante dos semanas, no puedo entender si es posible en CEF obtener el valor de una variable del código JS a una variable C++.
Por ejemplo:
Estoy ejecutando código js en una ventana del navegador usando el método CefFrame::ExecuteJavaScript:
(*frame).GetMainFrame()).ExecuteJavaScript("const elem = document.getElementsByClassName("my_class")[0];const rect = elem.getBoundingClientRect(); alert(rect.x + \":\" + rect.y)", "", 1);Y todo funciona muy bien, pero solo "dentro" de javascript.
Aquí está la pregunta: ¿es posible obtener de alguna manera el valor de una variable en rect.x para extraer y colocar una variable de C++ int rect_x ?
Es posible que haya notado que, si escribe rect.x en la consola en las herramientas de desarrollo, se repite el valor de la variable. Debería haberte dado una pista sobre cómo recuperar valores de variables.
CefRefPtr<CefV8Context> v8_context = frame->GetMainFrame()->GetV8Context(); if (v8_context.get() && v8_context->Enter()) { CefRefPtr<CefV8Value> retval; CefRefPtr<CefV8Exception> exception; if (v8_context->Eval("rect.x", "", 0, retval, exception)) { int rect_x = retval->GetIntValue() } v8_context->Exit(); }