我使用CEF网络浏览器内核替换IE浏览器ActivcX以支持跨平台。
昨天,我发布了一个线程,要求在CEF框架中支持Javascript回调方法window.external.xxx
。 How can I support window.external.xxx in cef framework
和Czarek Tomczak的示例代码解决了我的问题。谢谢Czarek Tomczak。
现在,Javascript函数可以调用我的C ++函数。但我算是另一个问题。当我收到CefV8handler执行回调函数时。
virtual bool Execute(const CefString& name, CefRefPtr<CefV8Value> object, const CefV8ValueList& arguments, CefRefPtr<CefV8Value>& retval, CefString& exception);
我发现名称和对象参数包含值,但参数参数不包含。
我的javascript代码就是那样
<script>
function test() {
alert(window.external.testlibcef("111111111"));
}
</script>
CefRenderProcessHandler函数中的代码OnContextCreated就像那样
CefRefPtr<CefV8Value> ptrGlobalObj = context->GetGlobal();
CefRefPtr<CefV8Value> ptrExternal = CefV8Value::CreateObject(NULL);
CefRefPtr<CefV8Handler> ptrV8Handler = new TcCefV8Handler();
CefRefPtr<CefV8Value> jsTestlibcef = CefV8Value::CreateFunction(_T("testlibcef"), ptrV8Handler);
ptrExternal->SetValue(_T("testlibcef"), jsTestlibcef, V8_PROPERTY_ATTRIBUTE_NONE);
ptrGlobalObj->SetValue("external", ptrExternal, V8_PROPERTY_ATTRIBUTE_NONE);
有什么我错过的吗?