WebKit/WebView点击/onclick默认突出显示(Android冰淇淋三明治)

WebKit/WebView点击/onclick默认突出显示(Android冰淇淋三明治),android,webview,webkit,highlight,tap,Android,Webview,Webkit,Highlight,Tap,我正在开发一个webview应用程序(4.0.3),而冰激凌三明治webview有一个恼人的地方: 每次在链接或任何可点击元素上出现点击/点击事件时,都会显示一个蓝色(我认为这取决于设备)突出显示。它看起来不是很好,因为我有我自己的点击动作添加到元素。最新的jQueryMobile(1.1.1)似乎不能很好地处理这个问题。在以前的版本中,所有主要的webkit样式都已被覆盖 如果有人知道如何摆脱恼人的亮点,我们将不胜感激 干杯, qmacpit 当然,在我问之前,我已经尝试过改变它们: -we

我正在开发一个webview应用程序(4.0.3),而冰激凌三明治webview有一个恼人的地方: 每次在链接或任何可点击元素上出现点击/点击事件时,都会显示一个蓝色(我认为这取决于设备)突出显示。它看起来不是很好,因为我有我自己的点击动作添加到元素。最新的jQueryMobile(1.1.1)似乎不能很好地处理这个问题。在以前的版本中,所有主要的webkit样式都已被覆盖

如果有人知道如何摆脱恼人的亮点,我们将不胜感激

干杯, qmacpit


当然,在我问之前,我已经尝试过改变它们:

-webkit点击突出显示颜色:rgba(255、255、255、0);
-webkit聚焦环颜色:rgba(0,0,0,0)

但如果是冰淇淋三明治,它就不起作用了。这个解决方案在安卓2.3中有效,在安卓2.3中,点击链接时会出现臭名昭著的“橙色边框”。 看起来它是WebView的一部分/设置。在本机浏览器中浏览页面时也会出现同样的行为。这真的很烦人,因为它不仅涉及链接,还涉及按钮和其他html元素

此外,jquerymobileteem还没有解决这个问题,尽管它对图形的影响非常大。要么他们还没有看到,要么他们还在研究解决方案


还有其他建议吗

如果您在元素上设置这些css属性,这应该会消失:

-webkit-tap-highlight-color: rgba(255, 255, 255, 0);
-webkit-focus-ring-color: rgba(0, 0, 0, 0);

我终于找到了答案:] 它是一个webview功能,可以通过调用

setLightTouchEnabled(false)

我发现自己也有同样的问题(android总是突出显示svg元素,即使使用上面建议的CSS)。 老实说,我不知道为什么css规则没有被强制执行(我100%确定它没有被覆盖),但我找到了另一个解决方案

看起来高亮显示只提供给为其设置了onclick侦听器的元素。我发现设置onTouchStart侦听器而不是onClick侦听器实际上解决了我的问题

我用JB4.2在Galaxy Nexus上测试了它。 请注意,在下面的示例中应用css规则不会像预期的那样起作用

<!html>
<html>
<head>
  <title>Click/touch test</title>
  <script type="text/javascript">
  function reset() {
    document.getElementById("A-test").innerHTML="On click listener";
    document.getElementById("A-test2").innerHTML="On touchstart listener";
  }
  window.onload = function() {
   document.getElementById("A-test").onclick = function () {
    this.innerHTML = "see the highlight"
   }

   document.getElementById("A-test2").ontouchstart = function () {
    this.innerHTML = "no highlight here"
   }
  }
  </script>
</head>
<body>
<div id="A-test">On click listener</div>
<div style="height: 60px"></div>
<div id="A-test2">On touchstart listener</div>
</body>
</html>

点击/触摸测试
函数重置(){
document.getElementById(“A-test”).innerHTML=“On click listener”;
document.getElementById(“A-test2”).innerHTML=“On touchstart listener”;
}
window.onload=函数(){
document.getElementById(“A-test”).onclick=function(){
this.innerHTML=“查看突出显示”
}
document.getElementById(“A-test2”).ontouchstart=function(){
this.innerHTML=“此处无突出显示”
}
}
点击式侦听器
关于touchstart侦听器

下面是JSFIDLE设置以下css属性:-webkit点击高亮显示颜色:rgba(0,0,0,0);这不会导致输入框出现问题。但是在这种情况下,您需要访问正在运行的HTML代码(尽管您可以将其注入HTML)。

此属性与您相关吗?或者这是专门针对iOS的?更改它并不能解决我的问题,不幸的是:[嘿,qmacpit…你确定吗?因为它在4.0上对我来说很好。此外,根据文档,setLightTouchEnabled默认设置为false。对我来说不起作用。请注意,WebSettings.setLightTouchEnabled方法被弃用,对Jelly Bean和更好的方法没有任何作用。