展会信息港展会大全

Android开发之WebView中捕获JavaScript事件
来源:互联网   发布日期:2015-10-02 21:24:58   浏览:2413次  

导读:前几天,在项目中遇到一个BUG:我们在Android工程中使用了WebView,打开一个网银支付url,点击支付的时候,他们会在网页中使用js弹出一个询问框,js代码如 下:functiontestConfirm(){if(confirm(payornot?)) ...

前几天,在项目中遇到一个BUG:

我们在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;

}

});

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

赞助本站

人工智能实验室

相关热词: WebView 捕获 JavaScript 事件

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港