javascript - 安卓 WebView : Determine <a> target= "_ blank"

标签 javascript android webview

是否可以检查用户是否点击了带有 target="_blank"的 html 链接。

我想做的是在我的应用程序中的 WebView 中显示 htlm,但在 android 默认浏览器中启动“外部”链接。 “外部”链接对我来说是带有 target="_blank"的链接。 所有其他链接都应在 webview 中处理。

例如:用户在我的 WebView 中点击这样的链接:

<a href="http://www.google.com" target="_blank">new window</a>

然后我想在 android 浏览器中打开给定的 url。

我尝试使用 shouldOverrideUrlLoading(),但此时我无法确定目标是“_blank”还是普通链接(没有目标)。

我也试过 setSupportMultipleWindows(true);结合 onCreateWindow(), 但在这个回调中我无法获取 url。

我无法更改显示的 HTML,所以我无法将 JavaScript Bridge 与 addJavascriptInterface() 一起使用

我还能做什么?还有其他想法吗?

最佳答案

我刚刚自己解决了这个问题。这是我修复它的方法。

mWebView.setWebChromeClient(new WebChromeListener() {
    @Override
    public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, Message resultMsg) {
        WebView newWebView = new WebView(view.getContext());
        newWebView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                startActivity(browserIntent);
                return true;
            }
        });
        WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
        transport.setWebView(newWebView);
        resultMsg.sendToTarget();
        return true;
    }
});

关于javascript - 安卓 WebView : Determine <a> target= "_ blank",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15368885/

相关文章:

java - Google meet、zoom 或 vetera 无法与 android webview 一起使用

android - WebView 在 Android 9.0 中没有加载页面?

javascript - 必须单击元素两次 Jquery 事件才能工作

android - Nox App Player 无法连接到 Android Studio

javascript - 流程图 : change the axis data type to time

android - MIUI 权限被拒绝 Activity KeyguardLocked

java - 尝试运行 gradle 命令时无法从 '11.0.1' 确定 java 版本

css - 防止移动 safari 滚动问题的简单解决方案(iOS)

javascript - Rx BehaviorSubject + 扫描将先前的事件推送给新订阅者?

Javascript : "[classname] is not defined" error