我有幾個關於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有點不尋常之外,代碼中沒有任何明顯的表現。 –