【问题标题】:Android WebView - Is it possible to intercept target="_blank" linksAndroid WebView - 是否可以拦截 target="_blank" 链接
【发布时间】:2013-03-31 20:41:08
【问题描述】:

只有在设置了 target="_blank" 的情况下,我才能让我的 WebView 拦截链接?

我知道 shouldOverrideUrlLoading() 方法,但如果链接设置了 target="_blank",那并没有给我信息。问题是,仅凭 url 我无法区分链接,我想拦截。我需要知道是否设置了 target="_blank"。

有办法吗?谢谢。

【问题讨论】:

    标签: android android-webview


    【解决方案1】:

    我也希望看到一个检查 target="_blank" 的解决方案,但我认为这是不可能的(除非可能有一些讨厌的 JavaScript 注入黑客)

    将额外的参数(例如?oib=1)附加到 URL 并在shouldOverrideUrlLoading 中检查它要简单得多:

    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url.contains("oib=1")) {
            view.getContext().startActivity(
                    new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
            return true;
        } else {
            return false;
        }
    }
    

    为此,您当然需要控制链接。如果你有很多这样的链接,你可以编写一个 JavaScript 函数来为你工作:

    jQuery('a[target="_blank"]').attr('href', function(i, h) { 
        return h + (h.indexOf('?') != -1 ? '&oib=1' : '?oib=1');
    });
    

    【讨论】:

    • 这不是一个讨厌的 Javascript 注入黑客吗? ;) 但我其实很喜欢这个主意,会尝试的。
    • 有趣的是,我没想到将上面的 Javascript 部分作为注入代码执行到 android 应用程序中。但我认为这会奏效(而且确实是一个令人讨厌的 JS 注入黑客,是的)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-28
    • 2021-07-28
    • 1970-01-01
    • 2015-01-16
    • 1970-01-01
    • 2014-11-19
    • 2012-05-08
    相关资源
    最近更新 更多