Android WebView - 是否可以拦截target =“_ blank”链接

时间:2013-03-31 20:41:09

标签: android android-webview

如果设置了target =“_ blank”,我怎样才能让我的WebView拦截链接?

我知道shouldOverrideUrlLoading()方法,但如果链接设置了target =“_ blank”,则不会提供信息。问题是,仅凭网址我无法区分链接,我想拦截。我需要知道,如果设置了target =“_ blank”。

有办法吗?谢谢。

1 个答案:

答案 0 :(得分:0)

我想看一个检查target="_blank"的解决方案,但我想,这是不可能的(除非可能有一些令人讨厌的JavaScript注入黑客)

将额外参数(例如?oib=1)附加到网址并在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');
});