前几天,在项目中遇到一个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()事件了。
测试用的url:http://liucundong.sinaapp.com/testWebView.php
网站标题:Android开发之WebView中捕获JavaScript事件
URL标题:http://www.mswzjz.cn/qtweb/news13/243913.html
攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能