一、移动端与PC端的区别html
二、如何解决移动端click屏幕产生200-300ms的延迟响应问题?jquery
当用户一次点击屏幕以后,浏览器并不能马上判断用户是要进行双击缩放,仍是想要进行单击操做。所以,iOS Safari 就等待 300 毫秒,以判断用户是否再次点击了屏幕。android
因而,300 毫秒延迟就这么诞生了。ios
步骤一:引入js文件:
步骤二:引入下面任何一种js代码
//第一种 最好在body前面引入下面的代码
if ('addEventListener' in document) {
document.addEventListener('DOMContentLoaded', function() {
FastClick.attach(document.body);
}, false);
}
//第二种:引入jquery组件
$(function() {
FastClick.attach(document.body);
})
//第三种
window.addEventListener( "load", function() {
FastClick.attach( document.body );
}, false );
能够看出zepto的tap经过兼听绑定在document上的touch事件来完成tap事件的模拟的,及tap事件是冒泡到document上触发的,
再点击完成时的tap事件(touchstart\touchend)须要冒泡到document上才会触发,而在冒泡到document以前,用户手的接触屏幕(touchstart)
和离开屏幕(touchend)是会触发click事件的,由于click事件有延迟触发(这就是为何移动端不用click而用tap的缘由)(大概是300ms,
为了实现safari的双击事件的设计),因此在执行完tap事件以后,弹出来的选择组件立刻就隐藏了,此时click事件还在延迟的300ms之中,
当300ms到来的时候,click到的其实不是完成而是隐藏以后的下方的元素,若是正下方的元素绑定的有click事件此时便会触发,
若是没有绑定click事件的话就当没click,可是正下方的是input输入框(或者select选择框或者单选复选框),点击默认聚焦而弹出输入键盘,
也就出现了上面的点透现象。
window.addEventListener( "load", function() {
FastClick.attach( document.body );
}, false );
$(function() {
FastClick.attach(document.body);
});
var FastClick = require(‘fastclick‘);
FastClick.attach(document.body, options);
$("#cbFinish").on("touchend", function (event) {
//不少处理好比隐藏什么的
event.preventDefault();
});
$("#cbFinish").on("tap", function (event) {
setTimeout(function(){
//不少处理好比隐藏什么的
},320);
});