2013-06-28 101 views
10

我有一個WebView加載一個網站,一旦我按下該網站的一些我的元素,WebView放置在按下的元素上的某種藍色覆蓋。刪除焦點覆蓋顏色的webview

無論如何刪除此行爲?

在此先感謝!

回答

25

這裏就是你要找的 [LINK]答案,總結吧:

您可以輕鬆地刪除突出顯示邊框(即出現在當一個元素集中的邊界)或改變它的顏色與CSS網頁視圖! WebKit特定的屬性「-webkit-tap-highlight-color」就是你要找的。

下面一行將禁用它完全在頁面上:

{ 
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0); 
} 

rgba()就像rgb(),但它需要4個參數的不透明度。我相信這可能也適用於iPhone WebView,因爲Chrome和Safari都基於WebKit。

它是CSS,因此您可以將它放在外部樣式表中,或者放置在帶有樣式標籤的HTML頁面中。

另一種更復雜的方法,從鏈路的commen部分採取的是:

{ 
-webkit-tap-highlight-color: rgba(0, 0, 0, 0); 
} 
:focus { 
outline: 0; 
border:none; 
color: rgba(0, 0, 0, 0); 
} 
+0

感謝您的幫助:) – Inx

+0

始終惠康;-) – g00dy

+1

相反比將顏色設置爲黑色並將alpha設置爲0.您可以使用'-webkit-tap-highlight-color:transparent;'[doc](https://developer.mozilla.org/en-US/docs/Web/ CSS/-webkit-tap-highlight-color) – venkatvb

2

雖然@ g00dy解決方案在大多數情況下工作,也有一些Android的版本中,這是不夠的。我想在此提到的所有屬性和其他職位,但沒有...

在這種情況下,始終工作原理是使用屬性的唯一方法:

-webkit-user-modify: read-write-plaintext-only; 

不好的一面是,它允許用戶編輯網頁視圖,它可以顯示鍵盤,甚至讓用戶在網頁視圖上書寫。

簡而言之,經過漫長的一天尋找解決方案,在所有設備和版本中唯一適用於我的方法是使用引用屬性,然後處理webview上的點擊。

這是醜陋的解決方法:

在我用一個div來包裝孔代碼,並增加了一個功能,點擊事件的HTML:

<html> 
<head>...</head> 
<body> 
<div id="background">...content...</div> 
</body> 
<script type="text/javascript"> 
window.onload = function(){ 
    var background = document.getElementById("background"); 
    background.addEventListener("click",backgroundClick,false); 

    function backgroundClick(e) { 
     console.log("whatever"); 
     window.location.href="ftp://"; //some protocolor (dummy url) 
    } 
} 
</script> 
</html> 

然後我們就可以覆蓋網址加載(或者從Android的控制檯日誌)如下:

WebSettings webSettings = webView.getSettings(); 
webSettings.setJavaScriptEnabled(true);  
webView.setWebViewClient(new WebViewClient() { 
       @Override 
       public boolean shouldOverrideUrlLoading(WebView view, String url) { 
        someView.requestFocus(); 
        //do something else if needed 
        return true; //or false if you want the webview to process the url loading 
       } 
      }); 

如果我們改變從web視圖焦點移到另一個元素不可編輯,沒有顯示鍵盤和效果是德發了一個。

這不是一個好的解決方案,但它是唯一終於爲我工作。

當然,這一切都是假設你需要其他觸摸事件工作(捏縮放,滾動,點擊...)。如果沒有,在webview上覆蓋onTouch事件,什麼都不做就足夠了。

我希望這可以幫助別人。 此致敬禮。

編輯: 我注意到你所說的「backgroundClick()」 js函數的事實禁用高亮效果甚至消除CSS屬性,而不是處理來自Android的單擊事件。所以,如果你不需要做的事件東西,你可以忽略的那部分,只是增加德事件監聽背景和什麼也不做:

<html> 
    <head>...</head> 
    <body> 
    <div id="background">...content...</div> 
    </body> 
    <script type="text/javascript"> 
    window.onload = function(){ 
     var background = document.getElementById("background"); 
     background.addEventListener("click",backgroundClick,false); 

     function backgroundClick(e) { 
      //nothing 
     } 
    } 
    </script> 
</html> 
+0

只是一個想法,你可以使用'pointer-events:none' [doc](https://developer.mozilla.org/en/docs/Web/CSS/pointer -events)而不是重寫onclick。 – venkatvb