只有在设置了 target="_blank" 的情况下,我才能让我的 WebView 拦截链接?
我知道 shouldOverrideUrlLoading() 方法,但是如果链接设置了 target="_blank" ,那并没有给我信息。问题是,仅凭 url 我无法区分链接,我想拦截。我需要知道是否设置了 target="_blank"。
有办法吗?谢谢你。
只有在设置了 target="_blank" 的情况下,我才能让我的 WebView 拦截链接?
我知道 shouldOverrideUrlLoading() 方法,但是如果链接设置了 target="_blank" ,那并没有给我信息。问题是,仅凭 url 我无法区分链接,我想拦截。我需要知道是否设置了 target="_blank"。
有办法吗?谢谢你。
我也想看到一个检查的解决方案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');
});