问题描述
我向网站添加了一些简单的 JavaScript:
jQuery(document).click(function(){ alert('click'); });
...而且只有当有人点击实际的锚元素、按钮元素或带有 cursor: pointer; CSS 的东西时,它才会在 iOS 中触发.
特别是,我在 Bootstrap 3 固定导航栏菜单中看到了这一点.当它打开时,我添加了:
jQuery(document).click(function(){ jQuery('#navbar-collapse.collapse.in').collapse('hide'); });
确保无论有人点击何处,它都会关闭.
这不适用于 iOS(已在 iPhone 4、iPhone 6/6+ 和 iPad 上验证).
似乎 jQuery 单击事件仅在"可点击"元素(A、BUTTON 等)或具有 cursor: pointer; CSS 或 onClick='...something...' 甚至 onClick='' HTML 属性的元素上注册.
所以,我的问题.这只是我吗?有没有其他人看到这个?
推荐答案
按照设计,您需要使用可点击的元素.所以是的,每个人都会遇到这个问题,除非他们使用类似的解决方案来处理它.如果它不能预期被点击,那么它就不会被 IOS 看到.
摘自苹果开发者页面.
<块引用>使元素可点击
由于 iOS 上的 Safari 创建事件来模拟鼠标的方式,您的某些元素在 iOS 上可能无法按预期运行.在特别是一些只使用 mousemove 处理程序的菜单,如清单6-1,需要更改,因为iOS不识别它们可点击元素.
清单 6-1 使用鼠标悬停处理程序的菜单
<span onmouseover = "..." onmouseout = "..." WHERE TO BUY </span><块引用>
要解决此问题,请添加一个虚拟的 onclick 处理程序 onclick = "void(0)",以便iOS 上的 Safari 将 span 元素识别为可点击元素,如如清单 6-2 所示.
清单 6-2 添加一个 onclick 处理程序
<span onmouseover = "..." onmouseout = "..." onclick = "void(0)"> WHERE TO BUY </span>