今天接手项目,修了几个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
如:
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;
}
});