2016-01-28 48 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等价物的默认行为更为宽容。 –