2017-11-22 8 views
0

ローカルのWebView内でインターネット接続なしでHTMLページを表示しようとしていますが、スクリプトがHTMLに追加されても内容は読み込まれません。 これは、HTMLを表示するためのコードです: JSがWebView Androidに追加されたときにHTMLページが読み込まれない

 String htmlContent = "<html>\n" + 
        "<head>\n" + 
        "<link rel=\"stylesheet\" type=\"text/css\" href=\"file:///android_asset/combined_main.css\" /> " + 
        "<link rel=\"stylesheet\" type=\"text/css\" href=\"file:///android_asset/libs.css\" />" + 
        "<script type=\"text/javascript\" async src=\"file:///android_asset/MathJax.js\"></script>\n" + 
        "</head>" + 
        "<body>" + 
        content.getContentName() + //My Rest of the HTML content 
        "</body>" + 
        "</html>\n"; 

      webView.getSettings().setLoadWithOverviewMode(true); 
      webView.getSettings().setUseWideViewPort(true); 
      webView.loadDataWithBaseURL("file:///android_asset/", htmlContent, "text/html", "UTF-8", null); 
     webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); 

      webView.getSettings().setJavaScriptEnabled(true); 
      webView.addJavascriptInterface(new WebAppInterface(this), "Android"); 
      webView.getSettings().setDomStorageEnabled(true); 
      webView.getSettings().setLoadsImagesAutomatically(true); 
      webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); 
      webView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH); 
      webView.requestFocus(View.FOCUS_DOWN); 
      webView.getSettings().setBuiltInZoomControls(true); 
      webView.getSettings().setDisplayZoomControls(false); 
      webView.setWebViewClient(new MyBrowser()); 

protected class WebAppInterface { 
     Context mContext; 

     /** 
     * Instantiate the interface and set the context 
     */ 
     WebAppInterface(Context c) { 
      mContext = c; 
     } 
    } 


    private class MyBrowser extends WebViewClient { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 

      return true; 
     } 

     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
      super.onPageStarted(view, url, favicon); 

      showLoading(); 

     } 

     @Override 
     public void onPageFinished(final WebView view, String url) { 
      super.onPageFinished(view, url); 

      new Handler().postDelayed(new Runnable() { 

       @Override 
       public void run() { 
        view.scrollTo(0, 0); 

       } 
      }, 500); 
      hideLoading(); 
     } 

     @Override 
     public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { 
//   super.onReceivedSslError(view, handler, error); 
      handler.proceed(); 
     } 
    } 

私は私のJSの行を削除した場合

は、Webページが表示され、それ以外の場合はそうではありません。

ご協力いただければ幸いです。前もって感謝します。

+0

で試してみてくださいあなたのMathJax.jsファイルの? – diegoveloper

+0

src> main> assetsフォルダ内 –

答えて

1

あなたはこのベースURLを使用してのWebViewを起動する場合は、次のパスがどこにある

webView.loadDataWithBaseURL("file:///android_asset/"... 

あなたは、あなたのHTMLファイル内で再び

をパスを配置する必要はありませんが

String htmlContent = "<html>\n" + 
        "<head>\n" + 
        "<link rel=\"stylesheet\" type=\"text/css\" href=\"combined_main.css\" /> " + 
        "<link rel=\"stylesheet\" type=\"text/css\" href=\"libs.css\" />" + 
        "<script type=\"text/javascript\" async src=\"MathJax.js\"></script>\n" + 
        "</head>" + 
        "<body>" + 
        content.getContentName() + //My Rest of the HTML content 
        "</body>" + 
        "</html>\n"; 
+0

ありがとう、それは私のために働いた。乾杯! –

関連する問題