如何在Chromium嵌入式框架(CEF)中获得JS对象

How to get JS Object in Chromium Embedded Framework (CEF)?

本文关键字:对象 JS CEF Chromium 嵌入式 框架      更新时间:2023-10-16

是否可以使用CEF API获得现有对象引用?

例如,我使用ExecuteJavaScript()

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

这个脚本创建了一个新的变量fooObj。有可能在c++代码中稍后获得对该变量的引用并修改其值?

您应该能够通过执行以下操作(未经测试)来获得它:

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

你可能需要进入/退出上下文,这取决于你在c++中从哪里调用它。此外,你可能需要将对象显式地引用为'window '。fooObj'在这种情况下,你必须获得'window'的值然后从那里获得'fooObj'

(编辑-不小心过早发布)(编辑2 - more)