新聞中心
前幾天,在項(xiàng)目中遇到一個(gè)BUG:

目前創(chuàng)新互聯(lián)建站已為近千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站托管維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、倉(cāng)山網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
我們?cè)贏ndroid工程中使用了WebView,打開一個(gè)網(wǎng)銀支付url,點(diǎn)擊支付的時(shí)候,他們會(huì)在網(wǎng)頁(yè)中使用js彈出一個(gè)詢問框,js代碼如下:
- function testConfirm() {
- if(confirm("pay or not?")) {
- alert("yes! i do");
- }
- else
- {
- alert("no!!!");
- }
- }
我在webView沒有對(duì)js這個(gè)事件進(jìn)行處理,就導(dǎo)致流程不能正確執(zhí)行下去了。
查了一下api,最后是這樣解決了:
首先,設(shè)置webView屬性:
- mWebView.getSettings().setJavaScriptEnabled(true); mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
其次,設(shè)置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;
- }
- });
如此,webView中就可以捕獲javascript的alert()、confirm()事件了。
測(cè)試用的url:http://liucundong.sinaapp.com/testWebView.php
新聞標(biāo)題:Android開發(fā)之WebView中捕獲JavaScript事件
當(dāng)前URL:http://www.5511xx.com/article/codhjsi.html


咨詢
建站咨詢
