想要在调用WebChromeClient#onCreateWindow时知道目标URL

Kur*_*uki 9 android

当我点击一个超链接target="_blank" attributes,WebChromeClient#onCreateWindow被调用,但我找不到一个方法,现在新窗口将打开什么网址?主页url是我唯一能知道的东西?

我想根据目标网址更改应用行为.感谢任何帮助,谢谢!

Mus*_*sir 5

也许我来晚了,但上述解决方案在 Android 10 上都不适合我。所以我是这样做的:

@Override
public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, android.os.Message resultMsg) {
    WebView newWebView = new WebView(view.getContext());
    WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
    transport.setWebView(newWebView);
    resultMsg.sendToTarget();
    newWebView.setWebViewClient(new WebViewClient() {
        @SuppressLint("NewApi")
        public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
            return shouldOverrideUrlLoading(view, request.getUrl().toString());
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView View, String url) {
            if (url != null && !url.isEmpty()) {
               // HERE IS URL WHICH YOU WANT
            }
            return false;
        }
    });
    return true;
}
Run Code Online (Sandbox Code Playgroud)


Kur*_*uki 4

解决了

我可以通过如下调用来获得点击的网址

public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
    WebView.HitTestResult result = view.getHitTestResult();
    int type = result.getType();
    String data = result.getExtra();
    // do something
}
Run Code Online (Sandbox Code Playgroud)

  • 这是可行的,但如果我有一个 <img> 标签嵌套在 <a href> 标签内,那么我只能获得 <img> 标签 src 位置。如何获取“href”属性中提到的位置的值? (4认同)
  • 实际上,我发现这只适用于单个 <a> 标签。目前我还没有找到该案例的解决方案。 (3认同)