2016-01-28 73 views
3

我有幾個關於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"); 
+0

Android 4.4及更高版本使用Chromium引擎,但在此之前它是WebKit引擎。你知道,如果你的問題是特定於版本的? –

+0

@RupertRawnsley我剛剛在4.0.3上測試過它,而WebView似乎也有同樣的問題。 –

+0

我會去掉除了啓用JavaScript之外的所有內容,然後檢查logcat是否有任何意外錯誤,例如JavaScript解析錯誤。如果失敗,發佈一個jsfiddle版本的頁面,以便我們可以在本地嘗試。沒有這一點就很難推測;除了shouldOverrideUrlLoading有點不尋常之外,代碼中沒有任何明顯的表現。 –

回答

2

所以我通過setDomStorageEnabled(true)得到了它的工作。

我從來不知道我在使用本地存儲時需要設置此項。

+0

呃,經典的Android WebView! iOS等價物的默認行爲更爲寬容。 –