1.12移动端事件

解决移动端延迟300s的插件:

使用:

jquery:
$(function() {
    FastClick.attach(document.body);
});
js原生:
if ('addEventListener' in document) {
    document.addEventListener('DOMContentLoaded', function() {
        FastClick.attach(document.body);
    }, false);

事件类型

touchstart 手指按下
touchmove 手指移动
touchend 手指抬起




    
    Document

    





    

PC端事件用在移动端会慢300s

移动端的点透


span, 点击我

效果是点击div,手指抬起div消失

但是,当你点到div上span标签的位置,会触发span的click事件,div是覆盖了span标签的

解决:
1:如果你点击div300毫秒之后才抬起手指, 也不会触发span的click事件
原因就是因为pc上的事件比移动端的事件的300ms延迟
2:换成移动端事件

 oSpan.addEventListener('touchend', function(){
    alert(1);
}, false);

3:阻止pc的事件

//猜想(pc的事件应该都算默认行为) 
document.addEventListener('touchstart', function(ev){//在移动事件里阻止默认行为
    ev.preventDefault();
}, false);

这是你阻止的click事件, 永远都不会触发, a标签也不会跳转,

touch所有类型事件都会冒泡,如果阻止了touchstart的默认行为,后续的mousedown和click事件将不会触发

阻止了touchmove的默认行为,后续的mousemove事件将不会触发

如果阻止了touchend的默认行为,后续的mouseup和click事件将不会触发

同时解决了:
//
IOS10下设置meta禁止用户缩放是不可行的。(使用阻止pc事件就可以在IOS10下禁止用户缩放)

解决IOS10下溢出隐藏的问题。
禁止系统默认的滚动条、阻止橡皮筋效果

禁止长按选中文字、选中图片、系统默认菜单

解决点透问题

也阻止了焦点元素的焦点行为(要正常使用:ev.stopPropagation()阻止冒泡)

手机端,无缝滚动效果代码




    
    Document
    
    


    

你可能感兴趣的:(1.12移动端事件)