可以使用 WebView 的 loadUrl 方法加载网页,并在 onPageFinished 方法中使用 JavaScriptInterface 获取 frame 中的内容。

具体步骤如下:

  1. 创建一个类,继承自 WebViewClient,并重写 onPageFinished 方法。

  2. 在 onPageFinished 方法中,使用 JavaScriptInterface 调用网页中的 JavaScript 函数,获取 frame 中的内容。

  3. 在 JavaScript 函数中,使用 window.parent.postMessage 方法将 frame 中的内容发送到父页面。

  4. 在父页面中,使用 window.addEventListener 方法监听 message 事件,并在事件处理程序中获取到 frame 中的内容。

示例代码如下:

public class MyWebViewClient extends WebViewClient {

    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        view.loadUrl("javascript:window.android.getContent(document.getElementsByTagName('iframe')[0].contentWindow.document.documentElement.outerHTML);");
    }
}

public class MyJavaScriptInterface {
    private Context mContext;

    public MyJavaScriptInterface(Context context) {
        mContext = context;
    }

    @JavascriptInterface
    public void getContent(String content) {
        // 将 frame 中的内容发送到父页面
        ((Activity) mContext).runOnUiThread(new Runnable() {
            @Override
            public void run() {
                webView.loadUrl("javascript:window.parent.postMessage('" + content + "', '*');");
            }
        });
    }
}

// 在 WebView 中设置 JavaScriptInterface
webView.addJavascriptInterface(new MyJavaScriptInterface(this), "android");

// 在父页面中监听 message 事件
window.addEventListener('message', function(event) {
    var content = event.data;
    // 处理 frame 中的内容
});

注意:在 Android 4.2 及以上版本中,需要使用 @JavascriptInterface 注解声明 JavaScriptInterface 方法,才能在 JavaScript 中访问。

安卓中 WebView 如何获取到网页中 frame 的内容

原文地址: https://www.cveoy.top/t/topic/6TR 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录