WebView.HitTestResult 只获取 <img src> 不 <a href>

问题描述 投票:0回答:1

我正在尝试使用“_blank”使用 Android 浏览器打开新窗口。我听这个活动。

  mWebView.getSettings().setSupportMultipleWindows(true);
             mWebView.setWebChromeClient(new WebChromeClient() {
                 @Override
                 public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, android.os.Message resultMsg)
                 {
                     WebView.HitTestResult result = view.getHitTestResult();
                     String data = result.getExtra();
                     Context context = view.getContext();

                     Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(data));
                     context.startActivity(browserIntent);
                     return false;

                 }

  });

但是当点击图片链接时它只打开图片网址。不是链接。如何从 WebView.HitTestResult 获取锚点。我不想打开图像类型网址。谢谢你的有趣。请帮助我。

javascript android jquery html webview
1个回答
0
投票

尝试了很多解决方案来获取目标页面网址而不是图像源,只有这个有效:

@Override
public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
    WebView.HitTestResult result = view.getHitTestResult();
    String url = result.getExtra();

    // Ensure that images with hyperlink return the correct URL, not the image source
    if (result.getType() == WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE) {
        Message href = view.getHandler().obtainMessage();
        view.requestFocusNodeHref(href);
        Bundle data = href.getData();
        if (data != null) {
            String imageUrl = data.getString("url");
            if (imageUrl != null && !imageUrl.isEmpty()) {
                url = imageUrl;
                //Handle url as you want..
                webView.loadUrl(url);
            }
        }
    }
    return true;
}

功劳归于Flutter_inappwebview

© www.soinside.com 2019 - 2024. All rights reserved.