html页面的轮播图与手机原生滑动冲突解决

之前开发app的时候,遇到了这样一个问题,app中的首页有一个导航栏,这里要求可以滑动,因此这一块由原生去做,但是其他部分则是由后h5前端实现,因为该页面就造成了原生,h5混合的情况。而这个页面又包含了轮播图,因为也涉及到滑动。原生在这个页面阻止的滑动事件,导致出现轮播图无法手动滑动的问题。经过跟安卓端开发人员沟通了解后,采用了以下的解决方案进行进行修复:

$('.w').on('touchstart touchend' ,function(event) {

    bindEvent();

});

//touchstart事件

function touchSatrtFunc(evt) {

    var mTop =$('.shop-index-active')[0].offsetTop;

    try {

        //evt.preventDefault(); //阻止触摸时浏览器的缩放、滚动条滚动等

        var touch = evt.touches[0];//获取第一个触点

        var x = Number(touch.pageX);//页面触点X坐标

        var y = Number(touch.pageY);//页面触点Y坐标

        //记录触点初始位置

        startX =x;

        startY =y;

        if (y -mTop >0) {

            Bridge.run('jsSetDisallowWebViewInterceptTouchEvent',{

                request:'false'

            });

        }else {

            Bridge.run('jsSetDisallowWebViewInterceptTouchEvent',{

                request:'true'

            });

        }

    }catch (e) {

        alert('touchSatrtFunc:' + e.message);

    }

}


function touchMoveFunc(evt) {

try {

//evt.preventDefault(); //阻止触摸时浏览器的缩放、滚动条滚动等

        var touch = evt.touches[0];//获取第一个触点

        var x = Number(touch.pageX);//页面触点X坐标

        var y = Number(touch.pageY);//页面触点Y坐标

    }catch (e) {

alert('touchMoveFunc:' + e.message);

}

}

//touchend事件

function touchEndFunc(evt) {

    try {

        //evt.preventDefault(); //阻止触摸时浏览器的缩放、滚动条滚动等

    }catch (e) {

        alert('touchEndFunc:' + e.message);

    }

}

//绑定事件

function bindEvent() {

    document.addEventListener('touchstart',touchSatrtFunc,false);

    document.addEventListener('touchmove',touchMoveFunc,false);

    document.addEventListener('touchend',touchEndFunc,false);

}

以上代码的思路就是:通过检测手指触摸的位置判断原生是否禁用滑动。

你可能感兴趣的:(html页面的轮播图与手机原生滑动冲突解决)