我在Android上使用WebViewClient时遇到了一些问题。这个网站在任何移动浏览器上都能完美运行,包括我设定用于调试的ChromeViewClient。
而且,在使用任何其他移动浏览器加载该网站时,并没有出现任何问题或错误。我使用Chrome的检查器并选择了一个设备,使用了本机的Android浏览器并测试了iOS WebView组件,以确保一切正常。
WebViewClient渲染了“部分”网站。例如,在一个页面上显示了图片,而在另一个页面上不显示;有的按钮不能点击;一个滑块不起作用等等。 我加载的网站非常依赖JavaScript和HTML5。我完全没有想到如何进一步调试这个问题,是否有某些JavaScript库无法正确加载?是否有其他方法推荐我在尝试调试此问题时实现?还是我缺少一些非常小的东西让我头痛不已?
以下是我们在网站上使用的JS文件:
- bootstrap.min.js; - jquery.min.js; - swiper.jquery.min.js; - slideout.min.js; - owl.carousel.min.js。
WebView的代码:
而且,在使用任何其他移动浏览器加载该网站时,并没有出现任何问题或错误。我使用Chrome的检查器并选择了一个设备,使用了本机的Android浏览器并测试了iOS WebView组件,以确保一切正常。
WebViewClient渲染了“部分”网站。例如,在一个页面上显示了图片,而在另一个页面上不显示;有的按钮不能点击;一个滑块不起作用等等。 我加载的网站非常依赖JavaScript和HTML5。我完全没有想到如何进一步调试这个问题,是否有某些JavaScript库无法正确加载?是否有其他方法推荐我在尝试调试此问题时实现?还是我缺少一些非常小的东西让我头痛不已?
以下是我们在网站上使用的JS文件:
- bootstrap.min.js; - jquery.min.js; - swiper.jquery.min.js; - slideout.min.js; - owl.carousel.min.js。
WebView的代码:
this.webview = (WebView)findViewById(R.id.webView);
webview.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
WebSettings settings = webview.getSettings();
settings.setJavaScriptEnabled(true);
webview.setWebViewClient(new WebViewClient(){
public boolean shouldOverrideUrlLoading(WebView view, String url){
view.loadUrl(url);
firstLoad = true;
return true;
}
// when the page is finished loading
public void onPageFinished(WebView view, String url){}
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl){
Toast.makeText(getBaseContext(), "Could Not load. " + description, Toast.LENGTH_SHORT).show();
alertDialog.setTitle("Error");
alertDialog.setMessage(description);
alertDialog.setButton("OK", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int which){
return;
}
});
alertDialog.show();
}
});
webview.loadUrl("mywebsite.com");