【发布时间】:2015-11-06 05:36:08
【问题描述】:
我有一个小 jsfiddle - http://jsfiddle.net/qhguktsn/5/。当您点击链接顶部的文本时(iOS 移动版 Safari),您只会获得鼠标事件 - 根本没有触摸事件,甚至在 body 上也没有。如果你在文本底部点击它,你会得到触摸事件。我们依靠触摸事件来处理 300 毫秒的延迟。
我们如何获得点击文本顶部和底部的触摸事件?
HTML:
<div style="margin-left:200px;margin-top:200px">
<a style="vertical-align:center;height: 20px, width: 20px;font-size:100px" href="javascript: void 0">text</a>
</div>
JS:
jQuery("a").on("mousedown", function() { document.body.appendChild(document.createTextNode("mousedown ")); });
jQuery("a").on("mouseup", function() { document.body.appendChild(document.createTextNode("mouseup ")); });
jQuery("a").on("touchstart", function() { document.body.appendChild(document.createTextNode("touchstart ")); });
jQuery("a").on("touchend", function() { document.body.appendChild(document.createTextNode("touchend ")); });
jQuery("a").on("click", function() { document.body.appendChild(document.createTextNode("click ")); });
jQuery(document.body).on("touchstart", function() { document.body.appendChild(document.createTextNode("body touchstart ")); });
jQuery(document.body).on("touchend", function() { document.body.appendChild(document.createTextNode("body touchend ")); });
【问题讨论】:
-
我想我在 iOS 8.1.2 和 Chrome 上可能有同样的事情。
-
Chrome 使用与 iOS 上的 Safari 相同的渲染引擎,因此行为应该是相同的(就像在 iOS 上运行的所有其他浏览器一样)。
-
我一直在努力找出为什么我的小按钮上的触摸事件没有持续触发,您的帖子帮助我理解这是一个边缘问题!只要您在任何边缘(包括左边缘和右边缘)太靠近点击,触摸事件就不会触发,但点击事件仍然会触发。
-
Android 上的 Chrome 也有同样的问题。
-
使用 jQuery Mobile 'tap' 事件进行了测试。即使触摸开始没有,“点击”事件似乎也会在边缘触发。不知道为什么。可能需要探索。
标签: ios mobile-safari