小编sun*_*100的帖子

JavaScript touchend与点击困境

我正在开发一些javascript UI,并使用很多触摸事件,如'touchend',以改善触摸设备的响应.然而,有一些逻辑问题困扰着我......

我已经看到许多开发人员在同一事件中混合'touchend'和'click'.在许多情况下它不会受到伤害,但基本上该功能会在触摸设备上触发两次:

button.on('click touchend', function(event) {
  // this fires twice on touch devices
});
Run Code Online (Sandbox Code Playgroud)

有人建议可以检测触摸功能,并适当设置事件,例如:

var myEvent = ('ontouchstart' in document.documentElement) ? 'touchend' : 'click';
button.on(myEvent, function(event) {
  // this fires only once regardless of device
});
Run Code Online (Sandbox Code Playgroud)

上面的问题是它会破坏支持触摸和鼠标的设备.如果用户当前正在双输入设备上使用鼠标,则"点击"将不会触发,因为仅为该按钮分配了"touchend".

另一个解决方案是检测设备(例如"iOS")并根据以下内容分配事件: 在iPad上的touchend上调用两次Click事件.当然,上面链接中的解决方案仅适用于iOS(不是Android或其他设备),而且似乎更像是一个"黑客"来解决一些非常基本的东西.

另一种解决方案是检测鼠标移动,并将其与触摸功能相结合,以确定用户是鼠标还是触摸.问题当然是当用户想要检测它时用户可能没有移动鼠标......

我能想到的最可靠的解决方案是使用简单的去抖功能来简单地确保该函数仅在短时间间隔内触发一次(例如100ms):

button.on('click touchend', $.debounce(100, function(event) {
  // this fires only once on all devices
}));
Run Code Online (Sandbox Code Playgroud)

我错过了什么,或者有没有人有更好的建议?

编辑:我在帖子后发现了这个链接,它提出了与上面类似的解决方案: 如何绑定'touchstart'和'click'事件但不回复两者?

javascript jquery click touch ios

44
推荐指数
2
解决办法
4万
查看次数

PHP正则表达式忽略以双__underscore开头的文件

我试过了,但我根本无法用PHP包围正则表达式.我需要一个执行以下操作的正则表达式:

  • 忽略以双__underscore开头的文件.(例如__file.jpg)
  • 忽略以"thumb"结尾的文件.(例如somethumb.jpg或thumb.jpg)
  • 忽略所有文件类型,但gif | jpg | png | jpeg

我现在有以下内容,它似乎满足#2和#3,但不是#1:

preg_match(/(?<!thumb)\.(gif|jpg|png|jpeg)$/i, $file)
Run Code Online (Sandbox Code Playgroud)

任何帮助非常感谢!

php regex preg-match

3
推荐指数
1
解决办法
101
查看次数

标签 统计

click ×1

ios ×1

javascript ×1

jquery ×1

php ×1

preg-match ×1

regex ×1

touch ×1