判断滑动到底禁止 ios微信方向

PreventScroll('body', '#pay', '#floor');//判断元素

if (!HTMLElement.currentStyle) {
function _getStyle(prop) {
var _s = window.getComputedStyle(this, null)
    return prop ? _s[prop] : _s;
}
   HTMLElement.prototype.currentStyle = _getStyle;
        HTMLElement.prototype.getStyle = _getStyle;
}
// 阻止微信下拉出黑底插件
function PreventScroll() {
// // 非微信浏览器直接跳出 -- 后来发现好些浏览器都有这个坑,所以去掉
// var ua = navigator.userAgent.toLowerCase();
// if (!ua.match(/MicroMessenger/i)) return;

var elem = arguments || []; // 传入绑定的元素
var $elem = []; // 存储所有需要监听的元素

// 获取需要监听的元素
for (var i=0,len=elem.length; i<</span>len; i++) {
  var $e = document.querySelectorAll(elem[i]);
   if (!$e) {console.error('您输入的元素不对,请检查'); return;}
      for(var j=0; j<</span>$e.length; j++) {
         if ($e[j].currentStyle('overflow').match(/auto|scroll/i)) {
    $elem.push($e[j]);
  }
 }
}

window.addEventListener('touchstart', function(e){
  window.scroll_start = e.touches[0].clientY;
    });
window.addEventListener('touchmove', prevent);

function prevent(e) {
    var status = '11'; // 1容许 0禁止,十位表示向上滑动,个位表示向下滑动
        var startY = window.scroll_start;
  var currentY = e.touches[0].clientY;
   var direction = currentY - startY > 0 ? '10' : '01'; // 当前的滚动方向,10 表示向上滑动

$elem.forEach(function(ele){
     var scrollTop = ele.scrollTop,
 offsetHeight = ele.offsetHeight,
       scrollHeight = ele.scrollHeight;

if (scrollTop === 0) {
// 到顶,禁止向下滑动,或高度不够,禁止滑动
  status = offsetHeight >= scrollHeight ? '00' : '01';
    } else if (scrollTop + offsetHeight >= scrollHeight) {
// 到底,则禁止向上滑动
   status = '10';
  }
});

// output.innerHTML = status + ' ' + ++count;
// 如果有滑动障碍,如到顶到底等
    if (status != '11') {
      if (!(parseInt(status, 2) & parseInt(direction, 2))) {
   e.preventDefault();
            return;
         }
              }
      }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值