learning-note icon indicating copy to clipboard operation
learning-note copied to clipboard

fastclick iphone need click 2 times

Open jackPanyj opened this issue 8 years ago • 0 comments

之前使用fastclick这个库帮我处理300ms毫秒延迟的问题,一直都是好好的。

直到有一天测试把我叫过去,点了点出现了一个诡异的bug.经过我一个下午的调试

最后准确的定位到了fastclick这个库上。

问题描述: 当手机屏幕超过一屏的时候,会点击弹窗按钮,然后关掉, 然后再点击显示弹窗就不管用了,需要

点击俩次才可以。而且这个现象只在iphone的手机上有问题,安卓机没有任何问题

这是测试页面

iphone手机打开上面的链接,然后点击屏幕最下方的click me按钮测试

解决方案:

谷歌了半天也没发现什么解决方案,就去fastclick

提了一个issue,感谢好心人回答了我的问题。

答案链接

具体原因不详,可能是fastclickbug.

ps: 由于我本人没有用jq库,所以修改了下答案的代码,最终如下:

<div class="full-page"></div>
<div class="click-me">click me</div>
<div class="overlay">
<div class="close" onclick='closeOverlay()'>X</div>
</div>
<script src="//cdn.bootcss.com/fastclick/1.0.6/fastclick.min.js" charset="utf-8"></script>
<script type="text/javascript">
if ('addEventListener' in document) {
    document.addEventListener('DOMContentLoaded', function () {
       window.FastClick.attach(document.body)
    })
    document.addEventListener('touchend', function (e) {
        if (e.target.className === 'click-me') {
            e.target.blur()
        }
})
}
</script>

测试页面

上面的页面在iPhone下是正常的。

jackPanyj avatar Nov 09 '16 07:11 jackPanyj