一、加載/顯示W(wǎng)ebView
// 創(chuàng)建 JBCefBrowser
JBCefBrowser jbCefBrowser = new JBCefBrowser();
// 將 JBCefBrowser 的UI控件設(shè)置到Panel中
this.content.add(jbCefBrowser.getComponent(), BorderLayout.CENTER);
// 加載URL
jbCefBrowser.loadURL(YOUR_URL);
js 向 java通信
<script type="text/javascript">
function callJava(arg) {
;
}
</script>
- 通過 JBCefJSQuery 攔截、接收js側(cè)callJava方法,參考代碼:
JBCefJSQuery query = JBCefJSQuery.create((JBCefBrowserBase) browser);
query.addHandler((String arg) -> {
try {
JSONObject requestAsJson = JSON.parseObject(arg);
System.out.println("in Handler fast json" + requestAsJson.toJSONString());
return new JBCefJSQuery.Response("msg");
} catch (Exception e) {
return new JBCefJSQuery.Response(null, 0, "errorMsg");
}
});
browser.getJBCefClient().addLoadHandler(new CefLoadHandler() {
@Override
public void onLoadingStateChange(CefBrowser cefBrowser, boolean isLoading, boolean canGoBack, boolean canGoForward) {
}
@Override
public void onLoadStart(CefBrowser cefBrowser, CefFrame frame, CefRequest.TransitionType transitionType) {
}
@Override
public void onLoadEnd(CefBrowser cefBrowser, CefFrame frame, int httpStatusCode) {
System.out.println("onLoadEnd");
cefBrowser.executeJavaScript(
"window.callJava = function(arg) {" +
query.inject(
"arg",
"response => console.log('callJava 成功', response)",
"(error_code, error_message) => console.log('callJava 失敗', error_code, error_message)"
) +
"};",
null, 0);
}
@Override
public void onLoadError(CefBrowser cefBrowser, CefFrame frame, ErrorCode errorCode, String errorText, String failedUrl) {
}
}, browser.getCefBrowser());
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。