关键代码以下:
@Override
publicvoidonReceivedError(WebView view,interrorCode,
String description, String failingUrl) {
//用javascript隐藏系统定义的404页面信息
String data = "Page NO FOUND!";
view.loadUrl("javascript:document.body.innerHTML=\""+ data +"\"");
}
主要是在WebViewClient里,重载OnReceivedError的方法,然后通过javascript操作dom去改变内容。
而网上大多数的处理方式是view.loadUrl(指向一个assets目录下的html文件或者"about:blank"),这样处理的话,在重新刷新时就会刷新当前这个错误的页面,或者在处理goBack()时候会出现一些问题。而通过以上方式则可以避免相应的问题。
自定义404页面。android的webview 控件可以加载网页,webview有两个方法:webView.setWebChromeClient和webView.setWebViewClient。
WebChromeClient主要处理解析,渲染网页等浏览器做的事情,辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度:
onCloseWindow(关闭WebView)
onCreateWindow()
onJsAlert (We