1

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

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

有办法吗?谢谢你。

4

1 回答 1

0

我也想看到一个检查的解决方案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');
});
于 2013-06-10T10:23:15.213 回答