Android WebView - onCreateWindow of Message.getData().getString(“url”)return null with < a>Tag createElement()created

8zzbczxx  于 2023-05-27  发布在  Android
关注(0)|答案(1)|浏览(114)

我遇到了一个问题与onCreateWindow的Android WebView这是我的代码:

@Override
    public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {

      final WebView newWebView = new WebView(view.getContext());

      Message href = view.getHandler().obtainMessage();
      view.requestFocusNodeHref(href);

      final String url = href.getData().getString("url");
      final String title = href.getData().getString("title");
      /*
      Run Some Codes for sending data (url + title string)
      */
      return false;
   }

基本上,我想监听将在新窗口中打开的URL(目标="_blank”)。上面的代码在dom中使用标签时效果很好,但是对于由createElement(“a”)javascript代码创建的标签,并通过运行aTag.click()打开,则url变量总是返回null。可能是因为createElement本身没有将标记插入到html dom中,所以requestFocusNodeHref()没有找到任何a标记(它实际上并不存在于WebView对象中)。
是否有任何解决方案来捕获具有这种类型的标签的链接?

zlhcx6iw

zlhcx6iw1#

尝试像这样使用shouldoverideurlloading,所以只需要添加这个方法:

public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
        // Handle URL loading as per your requirements
        String url = request.getUrl().toString();
        String title = request.getData().toString(); // adjuste this
        /*
        Run Some Codes for sending data (url + title string)
        */

        return true; // Return true to indicate that you're handling the URL loading
    }

相关问题