要绑定touchstart
和click
事件,但不响应这两个事件,可以通过以下步骤:
-
安装
fastclick
库,可以通过npm i fastclick
命令进行安装; -
在需要绑定
touchstart
和click
事件的页面或组件中引入fastclick
:
<script src="path/to/fastclick.js"></script>
或者在组件中使用import
引入:
import FastClick from 'fastclick';
- 在页面加载完成后对
document
进行绑定:
if ('addEventListener' in document) {
document.addEventListener('DOMContentLoaded', function() {
FastClick.attach(document.body);
}, false);
}
这样,touchstart
和click
事件就会被fastclick
监听并阻止默认行为,从而部分的解决了移动端点击延迟的问题。
如果想更加彻底的禁止touchstart
和click
事件的默认行为,可以在将fastclick
库引入后,在相应的元素上进行样式覆盖,即:
/* 禁用默认 tap/highlighted 状态 */
a, button, input, select, textarea {
-webkit-tap-highlight-color: rgba(0,0,0,0);
-webkit-tap-highlight-color: transparent;
tap-highlight-color: rgba(0,0,0,0);
tap-highlight-color: transparent;
}
/* 禁用 tap 内容滚动 */
* {
touch-action: manipulation;
}
这样,就可以完全禁止touchstart
和click
事件的默认行为,确保没有任何响应。
示例一:
在以下代码中绑定touchstart
和click
事件:
const button = document.querySelector('.button');
button.addEventListener('touchstart', function() {
console.log('touchstart');
});
button.addEventListener('click', function() {
console.log('click');
});
使用fastclick
处理:
if ('addEventListener' in document) {
document.addEventListener('DOMContentLoaded', function() {
FastClick.attach(document.body);
}, false);
}
示例二:
在以下代码中绑定touchstart
事件:
const button = document.querySelector('.button');
button.addEventListener('touchstart', function() {
console.log('touchstart');
});
使用样式禁止默认行为:
/* 禁用默认 tap/highlighted 状态 */
.button {
-webkit-tap-highlight-color: rgba(0,0,0,0);
-webkit-tap-highlight-color: transparent;
tap-highlight-color: rgba(0,0,0,0);
tap-highlight-color: transparent;
}
/* 禁用 tap 内容滚动 */
* {
touch-action: manipulation;
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何绑定touchstart和click事件,但不响应这两个事件 - Python技术站