2015-08-21 60 views
2

我最近做了一个(响应)重新设计我的网站。ios safari奇怪的双击/悬停behviour

奇怪的是有一些地方,其每一个测试错过了链接的一个奇怪的行为(因为他们认为他们已经错过了我想象中的链接):

如果你点击这些链接,他们只得到“激活” - - 但他们没有遵守。如果你再次点击它们,那么它们工作正常。

如果您单击连续说出7个链接,然后再点击第一个链接,这甚至会起作用。

这只发生在ios 8.x上(测试在8.4.1上),但不是在7.x上,而不是在android或任何桌面浏览器上。

随着远程调试,我什么都看不到。

我甚至不知道从哪里开始调试这...

影响可以看出(与8.x的iPhone)的位置:在上市产品http://www.plamundo.de

回答

2

我已经看到了相同的行为,但只有8.4.1不与8.4。这似乎也是您的网站上的情况。 8.4.1设备需要双击,8.4只需要一个水龙头。这是我构建的最小测试用例:

<html> 
<head> 
    <title>Minimal testcase iOS 8.4.1 hover double tap problem</title> 
    <style> 
     body { font-size: 2em; } /* Only needed for a readable font-size */ 
     a { display: block; font-decoration: none;} 
     a:hover { font-decoration: underline; } 
    </style> 
</head> 
<body> 
<a href="http://www.apple.com/" >Click me</a> 

</body> 
</html> 

我们通过使'a:hover'有条件解决了这个问题。您可以使用媒体查询(但如果您想要定位iPad则很难),或者使用一些JavaScript添加可用于选择CSS的类。例如:

if (!("ontouchstart" in document.documentElement)) { 
    document.documentElement.className += " no-touch"; 
} 

有:

.iamanobnoxiousiphonedevice *:hover{ 
    text-decoration: inherit !important; 
} 

来解决这方面的一个更简单的方法是移除“显示:块”,但我不知道这是一个选择。

+0

非常感谢。我想我会把所有悬停的东西扔出去。至少在苹果得到这个修复之前。 – Scheintod

0

一个奇怪的把戏的解决方案,在一个项目我工作的工作原理是重置的z-index:

* { z-index: 0 } 

发现,在一个Angular google group

我怀疑黑客瑞安欧(THX)它可能是我们网站上的Adobe Analytics“窃取”一些点击。在尝试将焦点放在文本字段并在点击后显示键盘时,也因为Adobe而出现问题。他们抓到了最初的点击,这样我们就变成了合成,并受到iOS的限制。