1
如何讓我的WebView攔截鏈接只有當他們有目標=「_ blank」設置?Android WebView - 是否有可能攔截目標=「_ blank」鏈接
我知道shouldOverrideUrlLoading()方法,但是如果鏈接有target =「_ blank」設置,那不會給我信息。問題是,只有網址我無法區分鏈接,我想攔截。我需要知道,如果target =「_ blank」被設置。
有沒有辦法?謝謝。
如何讓我的WebView攔截鏈接只有當他們有目標=「_ blank」設置?Android WebView - 是否有可能攔截目標=「_ blank」鏈接
我知道shouldOverrideUrlLoading()方法,但是如果鏈接有target =「_ blank」設置,那不會給我信息。問題是,只有網址我無法區分鏈接,我想攔截。我需要知道,如果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');
});
這不是一個討厭的JavaScript注入黑客呢? ;)但我真的很喜歡這個想法,會嘗試一下。 – ghost23
有趣的是,我沒有想到在android應用程序中執行上面的Javascript部分作爲注入代碼。但是我認爲這會起作用(並且確實是一個令人討厭的JS注入黑客,是的)。 –