2015-11-26 62 views
1

在React应用程序中,我有几个实现onClick处理程序的组件。问题是我在Ipad上部署到Safari,所以点击时延迟了300毫秒。消除这种延迟的最佳方法是什么?是否有可能覆盖React onClick监听器或类似的东西?我知道几个回购试图解决这个问题,但我不能添加新的方法,我只需要原始的onClick工作。此外,我知道react-fastclick,但它不适用于反应0.14覆盖React OnClick事件延迟300ms

回答

1

300ms的延迟是一般的移动设备的JavaScript的东西。 This link告诉你很多方法来解决它。我已经在听取touchend事件而非click的巨大成功,因为触摸事件没有延迟。

其它解决方法包括:

  1. 禁用缩放(铬和Firefox)加入一个元标记<meta name="viewport" content="width=device-width, user-scalable=no">

  2. 设置视口向装置宽度(铬32+)<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=3">

  3. 使用此非标准PointerEvents解决方法(适用于IE)

    a,button,.m yelements {-ms-touch-action:manipulation;/* IE10 / touch-action:manipulation;/ IE11 + * /}

+0

感谢您的链接,但我专门在移动 – dingdingding

+0

针对Safari浏览器你尝试'touchend'?对于这些事件,Safari不会有任何延迟。 – Macmee

+0

您是否建议挖掘React onClick处理程序以添加touchend?就是这样,我不想绑定更多的处理程序。我只想在全局范围内扩展onClick功能,而无需编辑每一个文件 – dingdingding