您的当前位置:首页正文

touch事件检测问题

来源:要发发知识网

在Bird修前人的bug时候发现了这一个bug的根源:


Paste_Image.png

先提问,hasTouch会返回什么东西呢?

.
.
.
.
.
. .
.
.
我在调试的时候发现无论什么时候, hasTouch返回的都是true.


接下来分析两个问题:

  1. 为什么永远返回的都是true
  2. 如何检测是否有touch事件

为什么返回的永远是true

我打印window之后发现:


Paste_Image.png

接下来写个代码片段

var a = {
  aaa:undefined,
  bbb: null
}
// a.aaa
//a.bbb
//['aaa'] in a
//['bbb'] in b

代码运行图:


Paste_Image.png

所以我们发现一个道理

[key] in obj 只能检测这个对象里是否有这个key的值, 而无法判断该值是否有效

那么如何检测是否有touch事件呢

其他办法没试过,一直用的是正则来判断


题外话:

这个项目以前是个高工写的. 如此低级的错误我想不应该会犯的, 同时,我在网上搜如何判断是否有touch事件的时候 给的方案也都类似于源码中的那种. 比如:


Paste_Image.png

所以 以上bug 肯定是有原因的, 但是是什么原因, 哪位大神能解释下, 我很想知道----------------