2013-06-28 102 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