2016-12-13 21 views
0

WebViewでJavascriptを有効にする。 JavaSciptを使用しないと、Webページのイメージのスケーリングが正しく機能しないためです。 WebViewでURLをロードする方法は次のとおりです。Android - JavaScriptの機能が呼び出されるとWebViewがクラッシュする

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     final String url = "http://nuz.uz/ekonomika-i-finansy/18651-v-2017-godu-v-uzbekistane-prekratitsya-realizaciya-lampochek-ilicha.html"; 

     final WebView webview = (WebView) findViewById(R.id.webview); 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
      WebView.setWebContentsDebuggingEnabled(true); 
     } 
     webview.getSettings().setJavaScriptEnabled(true); 
     webview.setWebChromeClient(new WebChromeClient() { 
      public void onConsoleMessage(String message, int lineNumber, String sourceID) { 
       Log.d("Tag", message + " -- From line " 
         + lineNumber + " of " 
         + sourceID); 
      } 
     }); 
     webview.setWebViewClient(new WebViewClient() { 
      @Override 
      public boolean shouldOverrideUrlLoading(WebView view, String loadingUrl) { 
       if (loadingUrl.equals(url)) return false;//open news link in webview 
       else { 
        Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(loadingUrl)); 
        startActivity(browserIntent); 
        return true; 
       } 
      } 

      @Override 
      public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error){ 
       Log.d("Tag", "Error occured: "+error.toString()); 
      } 

     }); 
     webview.loadUrl(url); 

    } 

} 

私はアプリケーションを実行しているときにWebページを開いています。ページのすべてのコンテンツを読み込んだ後、アプリがクラッシュしています。私はそれが次のエラー表示されたコンソールにエラーを表示してみました:私は、URLのコンテンツをチェックした

12-14 02:42:06.936 25760-25760/? D/Tag: Uncaught TypeError: Cannot call method 'init' of undefined -- From line 951 of http://nuz.uz/ekonomika-i-finansy/18651-v-2017-godu-v-uzbekistane-prekratitsya-realizaciya-lampochek-ilicha.html

をし、アプリのクラッシュを引き起こしている以下のが見つかりました:私はこの問題を解決するにはどうすればよい

<script type="text/javascript"> 

    jQuery(document).ready(function() { 

     App.init(); 
    }); 
</script> 

line 951: App.init();

JavaScriptをオフにすることなく? WebViewがアプリケーションをクラッシュさせないようにするにはどうすればいいですか?

答えて

0

あなたが右のライン951上のページのソースコードを、見れば、あなたはこのスクリプトは、匿名関数の結果であるとApp変数を宣言し

<script type="text/javascript" src="/templates/nuz_uz/assets/js/app.js"></script> 

を見つけることができますが、機能はdoesnの何も返さない。したがって、AppはまだjQueryがレディイベントを発生させる時点でundefinedです。あなたは基本的にウェブサイトのエラーを修正する必要があります、あなたのAndroidアプリは大丈夫です。

+0

残念ながら、これは私のウェブサイトではありません。私はそれ以上のコントロールはありません=)他の回避策はありますか? –

+0

a)JSなしでWebサイトをロードし、b)エラーを修正してください(ロードされたHTMLを混乱させるかどうかは不明です)。私の本では実行可能でも実用的でもありません。試してみてください:http://stackoverflow.com/questions/32530228/android-api-23-webview-how-to-ignore-javascript-errors –

関連する問題