我有几个关于Android上的WebViewClient的问题。 该网站的作品完美在任何移动浏览器。包括我为调试目的而设置的ChromeViewClient。Android WebView不能正确加载
而我使用任何其他手机浏览器加载的网站没有任何问题或错误。使用Chrome的检查器并选择设备,使用前面提到的原生Android浏览器,并在iOS WebView组件上进行测试以确保。
WebViewClient呈现网站的“部分”。在一个页面上的图像,而不是在其他页面上的图像,无法点击的按钮,无法使用的滑动条等等。我加载的网站非常强调JavaScript和HTML5。我完全不知道如何进一步调试这个问题,是否存在WebViewClient无法正确加载的某些JavaScript库?在尝试调试这个问题时,有没有其他方法可以推荐我实现?或者我错过了一些非常小的事情,会让我撞到桌子上?
这些都是我们所使用的网站上的JS文件:
- bootstrap.min.js,
- jquery.min.js,
- swiper.jquery.min.js,
- slideout.min.js,
- owl.carousel.min.js
代码的网页视图:
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");
Android 4.4及更高版本使用Chromium引擎,但在此之前它是WebKit引擎。你知道,如果你的问题是特定于版本的? –
@RupertRawnsley我刚刚在4.0.3上测试过它,而WebView似乎也有同样的问题。 –
我会去掉除了启用JavaScript之外的所有内容,然后检查logcat是否有任何意外错误,例如JavaScript解析错误。如果失败,发布一个jsfiddle版本的页面,以便我们可以在本地尝试。没有这一点就很难推测;除了shouldOverrideUrlLoading有点不寻常之外,代码中没有任何明显的表现。 –