老师我这边没有显示300ms的延迟 是浏览器更新迭代的原因吗 现在不是300了
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1.0, minimum-scale=1,maximum-scale=1, user-scalable=no"
/>
<title>click 事件 300ms 延迟</title>
<style>
.btn {
width: 100%;
height: 300px;
font-size: 100px;
}
</style>
</head>
<body>
<button id="btn" class="btn">提交</button>
<!-- <script src="https://cdn.bootcdn.net/ajax/libs/fastclick/1.0.6/fastclick.min.js"></script> -->
<script>
// 1.移动端 click 事件 300ms 延迟的原因
const btnEL = document.getElementById("btn");
btnEL.addEventListener(
"touchstart",
() => {
console.time("click");
},
false
);
btnEL.addEventListener(
"click",
() => {
console.timeEnd("click");
},
false
);
// 原因:double-tap to zoom 双击缩放
// 2.解决方案
// 2.1.不使用 click 事件,把 click 事件中要处理的放到 touchstart 或 touchend 中去处理
// 2.2.禁止双击缩放(浏览器厂商的努力)
// https://patrickhlauke.github.io/touch/tests/results/#suppressing-300ms-delay
// 2.2.1.viewport 中禁止缩放
// 2.2.2.touch-action: manipulation;
// 2.3.使用 Fastclick 库
// 主要针对老版本浏览器
// https://github.com/ftlabs/fastclick
</script>
</body>
</html>
10
收起
正在回答
1回答
同学你好,是因为加了viewport原因,去掉就有延迟了


课程中开始演示代码是没有viewport的

后面为了解决延迟有加上viewport。
祝学习愉快!

恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星