如何在 iOS 上将所有 onClick 事件更改为 TouchStart?
Posted
技术标签:
【中文标题】如何在 iOS 上将所有 onClick 事件更改为 TouchStart?【英文标题】:How to change all onClick events to TouchStart on iOS? 【发布时间】:2011-06-29 12:28:03 【问题描述】:在 ios 浏览器 (demo) 上执行之前,OnClick 事件有大约 400 毫秒的超时。我想将它更改为所有具有 onClick 的 DOM 元素的 TouchStart 事件。我怎样才能做到?
我使用 jQuery 并尝试检查所有元素的点击功能:
$('*').each(function()
if($(this).click != null)
// BUT all elements in DOM has click
)
【问题讨论】:
【参考方案1】:我没有确切的答案,但我认为你应该能够让这个做你想做的事。
为页面上每个具有 OnClick 的元素添加一个类 - 例如 TouchTarget。然后在你的启动函数中使用它。
$('.TouchTarget').bind('touchstart', function (e)
e.preventDefault();
touchStart(e, this);
);
创建一个如下所示的处理函数:
function touchStart(pEvent, pElement)
//Do something with the touch.
如果你只想在触摸可用的情况下注册,那么你可以保护绑定调用
if (Modernizr.touch)
我相信 OnClick 延迟的原因是因为 Safari 正在等待查看触摸是否真的是单击或拖动,或其他手势。这将快速识别简单的触摸。当我需要快速触摸时,我通常会同时绑定 touchstart 和 touchend,以便 touchstart 提供视觉反馈,然后 touchend 通过“点击”执行某些操作。此方法没有内置延迟。
【讨论】:
【参考方案2】:使用http://www.jqtouch.com/ 之类的产品或此处提供的代码片段:http://cubiq.org/remove-onclick-delay-on-webkit-for-iphone。
【讨论】:
以上是关于如何在 iOS 上将所有 onClick 事件更改为 TouchStart?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 RecyclerView Java 中创建 OnClick 事件
如何在卡片内的按钮上进行 onclick 事件:更改卡片背景颜色、按钮背景和文本颜色以及文本内容
我应该如何对 contenteditable div 进行双向绑定,以便我们可以在 onclick 事件发生时访问内容并进行更改?