如何在 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 事件

如何在ios上将按钮动作捕获到javascript中?

使用 OnClick 事件更改场景

iOS 上的 onclick/onSubmit 事件

如何在卡片内的按钮上进行 onclick 事件:更改卡片背景颜色、按钮背景和文本颜色以及文本内容

我应该如何对 contenteditable div 进行双向绑定,以便我们可以在 onclick 事件发生时访问内容并进行更改?