1) wait until some HTML page is fully loaded;
2) then execute my own JavaScript function;
3) then read the result of this function into CefString.
I tried to use CefV8Context in ClientHandler::OnLoadEnd function.
- Code: Select all
void ClientHandler::OnLoadEnd(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
int httpStatusCode)
{
if ((httpStatusCode != 0) && frame->IsMain())
{
CefRefPtr<CefV8Context> v8Context = frame->GetV8Context();
CefRefPtr<CefV8Value> globalObj = v8Context->GetGlobal();
CefRefPtr<CefV8Handler> handler = …;
CefRefPtr<CefV8Value> func = CefV8Value::CreateFunction("myfunc", handler);
CefV8ValueList args;
CefRefPtr<CefV8Exception> exception;
CefRefPtr<CefV8Value> retVal = evalFunc->ExecuteFunctionWithContext(v8Context, globalObj, args);
CefString retValStr = retVal->GetStringValue();
}
}
But application crashes on
string.CefRefPtr<CefV8Value> globalObj = v8Context->GetGlobal();
What am i doing wrong?
And can this be made via CefRegisterExtension? Because I don't actually want to rewrite the native JavaScript code into CEF native implementation.