2016-06-01 9 views
0

Ich versuche, den Inhalt der Web-Seite in Android zu bekommen .. Ich habe bereits versucht JSoup verwenden, aber es bietet keine Unterstützung für Ajax ..Get Ajax Loaded Html in WebView Android

So bin ich versuchen, URL innerhalb einer unsichtbaren Netzansicht zu laden und das HTML in onPageFinished Methode zu erhalten.

Ich kann das HTML erhalten, aber das ajax geladene HTML erscheint nicht. Hier ist der Code:

final WebView webView = (WebView) findViewById(R.id.testWebView); 
webView.getSettings().setJavaScriptEnabled(true); 
webView.addJavascriptInterface(new MyJavaScriptInterface(this), "HtmlViewer"); 
webView.setWebViewClient(new WebViewClient() { 
     public void onPageFinished(WebView view, String url) { 
      Log.d(TAG, "finished loading : "); 
      webView.loadUrl("javascript:window.HtmlViewer.showHTML" + 
        "('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');"); 
     } 
    }); 
webView.loadUrl(url); 



class MyJavaScriptInterface { 

    private Context ctx; 

    MyJavaScriptInterface(Context ctx) { 
     this.ctx = ctx; 
    } 

    @JavascriptInterface 
    public void showHTML(String html) { 
     Log.d(TAG, "HTML: " + html); 
     new AlertDialog.Builder(ctx).setTitle("HTML").setMessage(html) 
       .setPositiveButton(android.R.string.ok, null).setCancelable(false).create().show(); 
    } 

} 

Also meine Fragen sind:

-Warum ist nicht die Ajax-html mit der HTML-Seite geladen?

- Gibt es eine andere Möglichkeit, Seite html mit Ajax mit einer Bibliothek oder etwas ähnliches zu laden?

Antwort

0

Sie müssen webView.loadData() Methode verwenden, HTML-Datei zu laden, so ersetzen Sie die Ajax laden auf diese Weise.

webView.loadData("javascript:window.HtmlViewer.showHTML" + 
        "('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');", "text/html; charset=utf-8",null); 

Ich hoffe, dass es Ihr Problem lösen wird.

+0

Ich bin nicht wirklich vertraut mit dem WebView, aber ich ersetzt webView.loadUrl durch webView.loadData aber die showHTML-Methode wird nie aufgerufen. onPageFinished wird ständig aufgerufen –