CefV8Handler回调函数的参数执行无效

时间:2017-03-01 04:31:05

标签: javascript c++ windows chromium-embedded

我使用CEF网络浏览器内核替换IE浏览器ActivcX以支持跨平台。

昨天,我发布了一个线程,要求在CEF框架中支持Javascript回调方法window.external.xxxHow 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);

有什么我错过的吗?

0 个答案:

没有答案