2016-06-01 21 views
0

我試圖讓Android的網頁的內容。我已經使用JSoup嘗試,但它並沒有使用AJAX的支持..獲取阿賈克斯加載的HTML中的WebView的Android

所以我試圖加載URL在一個不可見的web視圖,並得到在onPageFinished方法的HTML ..

我可以得到的HTML,但沒有出現ajax加載的HTML。下面的代碼:

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(); 
    } 

} 

所以我的問題是:

- 爲什麼不加載的頁面HTML Ajax的HTML?

- 是否有另一種方法來加載頁面的html與ajax使用庫或類似的東西?

回答

0

您需要使用webView.loadData()方法加載HTML文件,以這種方式替換Ajax加載。

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

我希望它能解決您的問題。

+0

我不是很熟悉WebView,但我用webView.loadData替換了webView.loadUrl,但showHTML方法從未被調用過。 onPageFinished被不斷調用 –