【问题标题】:Get Ajax Loaded Html in WebView Android在 WebView Android 中获取 Ajax 加载的 Html
【发布时间】:2024-01-24 04:07:01
【问题描述】:

我正在尝试在android中获取网页的内容..我已经尝试过使用JSoup,但它不支持使用ajax..

所以我试图在一个不可见的网络视图中加载 url 并在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?

-是否有另一种使用库或类似工具通过 ajax 加载页面 html 的方法?

【问题讨论】:

    标签: javascript android html ajax android-webview


    【解决方案1】:

    您需要使用webView.loadData() 方法来加载HTML 文件,所以用这种方式替换Ajax 加载。

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

    希望它能解决你的问题。

    【讨论】:

    • 我对 WebView 不是很熟悉,但我用 webView.loadData 替换了 webView.loadUrl,但从未调用过 showHTML 方法。 onPageFinished 被不断调用
    最近更新 更多