关于Android与JS的兼容

今天接手项目,修了几个BUG。Android作为前端调用WebView,接后台的JS代码,导致有很多显示的问题。Webview作为网页控件显示上还是有很多不太兼容的地方。


1.使用WebView时,JS的Alert不能正常显示。

解决方法:在Setting中设定WebChromeClient(),WebChromeClient相比较于Webview功能更加强大, 各种控件的兼容上也更好。

如:WebView.setWebChromeClient(new WebChromeClient());


2.JS的Alert显示来自于XXXXX网页的提示框

解决方法:还是在WebChromeClient上下功夫,在webView.setWebChromeClient(new WebChromeClient()中重写Alert

Android自定义Alert

如:

final Context mapp = this;

        webView.setWebChromeClient(new WebChromeClient(){

            @Override

            public boolean onJsAlert(WebView view, String url, String message, final android.webkit.JsResult result) {

                new AlertDialog.Builder(mapp)

                        .setTitle("alert")

                        .setMessage(message)

                        .setPositiveButton(android.R.string.ok,

                                new AlertDialog.OnClickListener() {

                                    public void onClick(DialogInterface dialog, int which) {

                                        result.confirm();

                                    }

                                }).setCancelable(false).create().show();

                return true;

            }

            @Override

            public boolean onJsConfirm(WebView view, String url, String message, final JsResult result) {

                new AlertDialog.Builder(mapp)

                        .setTitle("confirm")

                        .setMessage(message)

                        .setPositiveButton(android.R.string.ok,

                                new DialogInterface.OnClickListener() {

                                    public void onClick(DialogInterface dialog, int which) {

                                        result.confirm();

                                    }

                                }).setNegativeButton(android.R.string.cancel,

                        new DialogInterface.OnClickListener() {

                            public void onClick(DialogInterface dialog, int which) {

                                result.cancel();

                            }

                        }).create().show();

                return true;

            }

        });

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容