2013-03-31 37 views
1

如何讓我的WebView攔截鏈接只有當他們有目標=「_ blank」設置?Android WebView - 是否有可能攔截目標=「_ blank」鏈接

我知道shouldOverrideUrlLoading()方法,但是如果鏈接有target =「_ blank」設置,那不會給我信息。問題是,只有網址我無法區分鏈接,我想攔截。我需要知道,如果target =「_ blank」被設置。

有沒有辦法?謝謝。

回答

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'); 
}); 
+0

這不是一個討厭的JavaScript注入黑客呢? ;)但我真的很喜歡這個想法,會嘗試一下。 – ghost23

+0

有趣的是,我沒有想到在android應用程序中執行上面的Javascript部分作爲注入代碼。但是我認爲這會起作用(並且確實是一個令人討厭的JS注入黑客,是的)。 –

相關問題