有一个C的示例,或者可以参考一下。
C与JavaScript互相调用
C++调用JavaScript
和wke一样,wkexe也可以通过相同的wkeRunJS函数调用JavaScript代码,
但不同的是,如果C++代码想要获得JavaScript的返回值,需要在调用的JS代码前加上return:
jsRet = wkeRunJS(gWkeWebView, "return funcforcplusplus(\"\xe4\xbd\xa0\xe5\xa5\xbd ABCDEFG\")");
jsRetStr = jsToStringW(wkeGlobalExec(gWkeWebView), jsRet);
MessageBox(hWnd, jsRetStr, L"runJS返回", 0);
JavaScript调用C++
同wke一样,JS调用C++代码也需要绑定,在RunApplication函数中CreateWebWindow之前添加如下代码:
jsBindFunction("msgBox", js_msgBox, 2);//JS调用C++
同时在app.cpp文件中添加:
//JS调用C++
jsValue JS_CALL js_msgBox(jsExecState es)
{
const wchar_t* text = jsToStringW(es, jsArg(es, 0));
const wchar_t* title = jsToStringW(es, jsArg(es, 1));
MessageBox(NULL, text, title, 0);
return jsStringW(es, L"C++返回字符串");
}
前端测试用的HTML代码如下:
<!DOCTYPE html>
<html xmlns="http://www.
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>WKE Test Web Page</title>
<script>
function funcforcplusplus(instr){
document.getElementById('result').value=instr;
return navigator.userAgent;
//return "JavaScript Return 返回啦";
}
</script>
</head>
<body>
<p>WKE Test Web Page</p>
<a href='#' onclick="document.getElementById('result').value=msgBox('TEST Function from JS to Cpp','来自Javascript的调用');">LINK</a>
<textarea rows='6' cols='36' id='result'>hello</textarea>
</body>
</html>