在IDEA插件中使用webView

一、加載/顯示W(wǎng)ebView

  • plugin中需要使用JCEF加載webView
// 創(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通信

    1. 在H5中添加以下js:
 <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ù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容