【发布时间】:2016-11-14 18:29:43
【问题描述】:
我正在为 iPad 开发一个应用程序。 (它是一个内部应用程序,所以它真的只适用于 iPad 而不是其他设备。)
在应用程序的第 1 页上,我有一个指向第 2 页的链接。但是,由于我需要保持独立模式,因此我阻止了链接上的默认单击行为,而是更改了 location 对象。第 2 页恰好在与我刚刚单击的链接完全相同的坐标处有一个文本输入。即使我禁用了链接上的点击行为,点击事件现在也会在链接所在的输入上触发。 (这是因为touchend 的触发与click 的触发之间存在延迟。)
我在点击输入时尝试了event.preventDefault() 和event.stopPropagation(),但点击事件仍在触发并打开 iPad 的键盘。
任何想法如何阻止这种情况?谢谢。
编辑:将输入设置为readonly 或disabled 不是一个选项,因为当用户有意将其聚焦时输入需要工作(我将使用touchend事件来完成此任务)。
问题是用户在首页点击链接,触发touchend 和click 事件。 touchend 更改 location.pathname,并在第二页加载后触发 click 事件。因为第二页在触发click 事件的相同坐标处有一个文本字段,所以event.target 变成了input,到目前为止,所有禁用此事件的尝试都失败了。
【问题讨论】:
-
您可以在单击侦听器中设置一个 touchend 事件侦听器,以防止默认设置并自行删除。这样只会取消第一次点击。
-
谢谢 - 这不是解决方案,但为我指明了正确的方向。我将
event.stopPropagation和event.preventDefault添加到在touchend上更改location.pathname的方法中,并阻止触发对表单的点击。
标签: javascript ios dom-events