Android WebView中捕獲JavaScript事件

jopen 11年前發布 | 73K 次閱讀 Android Android開發 移動開發

我們在Android工程中使用了WebView,打開一個網銀支付url,點擊支付的時候,他們會在網頁中使用js彈出一個詢問框,js代碼如下:

function testConfirm() { 
    if(confirm("pay or not?")) { 
      alert("yes! i do"); 
    } 
    else
    { 
      alert("no!!!"); 
    } 
}

我在webView沒有對js這個事件進行處理,就導致流程不能正確執行下去了。

查了一下api,最后是這樣解決了:

首先,設置webView屬性:

mWebView.getSettings().setJavaScriptEnabled(true); mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);

其次,設置WebChromeClient:

     mWebView.setWebChromeClient(new WebChromeClient() {

        @Override
        public boolean onJsAlert(WebView view, String url, String message,
                final JsResult result) {
            AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
            builder.setMessage(message)
                    .setNeutralButton("確定", new OnClickListener() {
                        @Override
                        public void onClick(DialogInterface arg0, int arg1) {
                            arg0.dismiss();
                        }
                    }).show();
            result.cancel();
            return true;
        }

        @Override
        public boolean onJsConfirm(WebView view, String url,
                String message, final JsResult result) {
            // TODO Auto-generated method stub
            Log.i(TAG, "onJsConfirm" + "," + "url: " + url);

            DialogUtils.dialogBuilder(mContext, "溫馨提示", message,
                    new DialogCallBack() {

                        @Override
                        public void onCompate() {
                            Log.i(TAG, "onJsConfirm,onCompate");
                            result.confirm();
                        }

                        @Override
                        public void onCancel() {
                            Log.i(TAG, "onJsConfirm,onCancel");
                            result.cancel();
                        }
                    });
            return true;
        }
    });</pre><br />

如此,webView中就可以捕獲javascript的alert()、confirm()事件了。

測試用的url:http://liucundong.sinaapp.com/testWebView.php

來自:http://my.oschina.net/liucundong/blog/161110

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!