ios - 为什么/什么时候我必须点击两次才能触发 iOS 上的点击

标签 ios mobile click touch tap

好吧,我觉得我疯了......

我正在查看 iOs 6.0 上的 Mobile Safari。关于何时点击元素会触发点击,我似乎无法确定任何押韵或理由。在许多情况下,我似乎需要点击一次以触发悬停,然后再次点击以触发点击。

Mobile Safari spec说:“......单指和两指手势生成的事件流是有条件的,具体取决于所选元素是可点击还是可滚动......可点击元素是链接,表单元素,图像映射区域,或具有 mousemove、mousedown、mouseup 或 onclick 处理程序的任何其他元素...由于这些差异,您可能需要将某些元素更改为可点击元素..."

它继续建议开发人员“...添加一个虚拟的 onclick 处理程序,onclick = “void(0)”,以便 iOS 上的 Safari 将 span 元素识别为可点击元素。”

但是,我的测试表明这些陈述是错误的。

JsFiddle:http://jsfiddle.net/6Ymcy/1/

html

<div id="plain-div" onclick="void(0)">Plain Div</div>

js

document.getElementById('plain-div').addEventListener('click', function() {
   alert('click'); 
});

尝试在 iPad 上点击该元素。 什么都没发生

但我离题了。对我来说重要的是找出以下问题:

确定单击元素何时会在第一次点击时触发“点击”事件的确切标准是什么?与在第一次点击时触发“悬停”事件和“第二次点击时点击'事件。

在我的测试中, anchor 元素是我唯一可以在第一次点击时触发点击的元素,然后,只是偶尔且不一致。

这是我开始感到疯狂的地方。我广泛地搜索了互联网,几乎没有发现任何关于这个问题的信息。只有我吗?!有人知道哪里有关于两次点击的标准和/或处理这些限制的方法的讨论吗?

我很乐意回答问题/请求。

谢谢!

最佳答案

我遇到了同样的问题。最简单的解决方案是不在 iOS(或任何支持触摸的目标平台)上绑定(bind) mouseenter 事件。如果未绑定(bind),悬停事件将不会被触发,click 会在第一次点击时触发。

关于ios - 为什么/什么时候我必须点击两次才能触发 iOS 上的点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17710893/

相关文章:

javascript - 试图连接一个 jQuery .click() 事件 .. 但它被触发了(而不是仅仅连接)

ios - AQGridView - DidSelectItemAtIndex 不工作

flutter - 如何在Flutter中绘制带有边框半径的自定义矩形?

ios - 如何使用 swift3 在​​ UITableView 的两个不同单元格中显示两个数组

iOS 应用程序更新不显示在搜索屏幕上,而仅显示在应用程序页面上,为什么?

javascript - 通过 javascript/php 重定向移动/桌面用户

javascript - 如何在单击 3 次鼠标后启动操作

xaml - 如何在 XAML 中单击按钮的 'clicked' 事件后触发 'command' 事件?

ios - NSInternalInconsistencyException 访问_cachedSystemAnimationFence 需要主线程

ios - UITableViewCell 中的 YTPlayerView