是否可以使用 CEF API 获取现有对象引用?
例如我运行一个脚本使用ExecuteJavaScript()
function foo()
{
var self = this;
self.value="some value";
}
var fooObj = new foo;
此脚本创建一个新变量fooObj
。以后可以在 C++ 代码中获取对这个变量的引用并修改它的值吗?
是否可以使用 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 - 更多)