使用普通javascript检测点击和触摸事件
detecting clicks and touch events with vanilla javascript
大家好。我想获得页面上第一次点击或触摸的时间戳。这个页面可以在普通浏览器中加载,也可以在网络视图中加载,所以最好使用没有任何库的普通javascript。
这有可能实现吗?或者我必须使用一些jQuery之类的?我只想保存第一次交互的Date.now()
。
如果你只想听第一次点击,你可以做一些简单的事情,比如:
window.onclick = function() {
var timeStamp = Date.now();
console.log(timeStamp);
//do manipulations, send data to server / anything you want to do
//unbind window.onclick (resetting it to empty function)
window.onclick = function() {}
}
您可以在MDN上阅读有关onclick
的更多信息
请注意这将解除绑定绑定到窗口对象本身的每个onclick,因为您只能有一个这样的侦听器。然而,与window.onclick = function() { ... }
相比,还有另一种方法带来了以下优势:
- 它允许为一个事件添加多个处理程序。这是特别适用于DHTML库或Mozilla扩展需要与其他库/扩展很好地配合使用
- 当监听器被激活时,它为您提供了对阶段的细粒度控制(捕获与冒泡)
- 它适用于任何DOM元素,而不仅仅是HTML元素
因此,这基本上允许您添加这样的事件:
//first event listener
window.addEventListener('click', function() { console.log('click1'); });
//second event listener (also a click)
window.addEventListener('click', function() { console.log('click2'); });
上面的示例将在控制台中输出以下内容:
"click1"
"click2"
对addEventListener
的浏览器支持是非常好的,即使你需要支持旧的浏览器,你也必须小心,因为不同的浏览器会有不同的实现。
对于(大多数)触摸设备,点击被转换为触摸,延迟300毫秒以检查双击,这并不是全部,但总体上实现得相当一致。
在MDN上,有一些关于Touch Web API的东西,但如果你向下滚动,它还没有真正的支持,其他库实现了使用鼠标事件的代码,这些鼠标事件被设备转换为点击,并将其与一些对象包装器一起使用来触发自定义触摸事件,Hammer.js就是其中一个库——这个库可能更聪明一点,因为它可能使用真实的触摸事件(如果存在的话),但我以前从未使用过Hammer.js。
相关文章:
- 谷歌地图劫持了iphone's滚动(触摸事件)-如何恢复
- 如何使用纯javascript的移动触摸事件
- 移动定时触摸事件
- 模拟html5的触摸事件
- Phonegap/Cordova:如何添加Javascript多点触摸事件
- 如何在AngularJS中监听点击事件,而不是触摸事件
- 我可以让我的网站的内容可编辑区域对安卓股票浏览器上的触摸事件更敏感吗
- 在 Firefox 中“解析”触摸事件
- 将触摸事件转换为鼠标事件仅每秒有效一次
- 在移动 Safari 上向下拖动时,触摸事件停止触发 - iPad HTML5
- 如何在 javascript 中触发触摸事件
- 为什么触摸事件不在手指按压的中间
- 如何启用离子多点触摸事件
- 当我将位置更改为绝对时,画布精灵表和触摸事件不起作用
- 当元素在事件绑定后附加到DOM时,触摸事件不起作用
- JavaScript的触摸事件
- Tizen可穿戴设备屏幕顶部的Javascript触摸事件
- 用标准javascript而不是jquery中的mousedown、mousemove和mouseup触摸事件句柄
- (窗口中的'ontouchstart')返回true,但没有触摸事件
- 传单触摸事件未触发