在滚动事件IE中停止滚动

时间:2014-03-06 03:45:06

标签: jquery internet-explorer scroll

我遇到了IE的一些问题以及我放在一起的这段代码。

我想要发生的事情如下:

  • 用户可以在第一个页脚上方自由滚动,但不能在其下方滚动
  • 要到达页脚下方,只需点击一下即可

我已经设法将我的预期行为放在一起,但它在IE上无法正常工作,因为它允许在第一个页脚下滚动,然后才设置scrollTop值。此JSBIN在Chrome / Firefox / Safari上正常运行。

我在这里错过了什么让这段代码在IE上运行?

jQuery的:

var isAtBottom = false,
    isFarDown = false,
    wasClicked = false,
    scrollComplete = false;
$(window).scroll(function() {
    var scrollH = $(window).scrollTop(),
        windowH = $(window).height(),
        documentH = $(document).height(),
        footer = $('.footer'),
        breaker = $('.break');

  if (scrollH > (documentH - windowH - footer.height())){
    if(!wasClicked){
      //here is where IE goes south
      $('html, body').scrollTop(documentH - windowH - footer.height() - 1);
    }
  } else {
    if(wasClicked && scrollComplete){
        wasClicked=false;
        scrollComplete=false;
    }
  }
});

$('.scrollToEnd').click(function(){
    //sends you to top
    if (isAtBottom) {
        $('html, body').animate({
            scrollTop: 0},
            1200, function(){
                wasClicked = false;
            });
        return;
    }
    //is anywhere above the absolute bottom
    if (!isFarDown) {
        wasClicked = true;
        $('html, body').animate({
            scrollTop: $(document).height() - $(window).height()},
            1200, function(){
                scrollComplete = true;
            });
    }
});

我已经阅读了有关该主题的几个答案,但还没有找到停止滚动事件的方法。

我已经看过overflow解决方案了,但它并不适用于整个场景,虽然它确实停止了滚动它移除滚动条并给整个网站一个奇怪的左右移动。 (我不想添加overflow:scroll来保持滚动,因为并非所有页面都会溢出)

我已经考虑从'html, body'元素和window取消绑定滚动事件,但无效。

有什么想法吗?

0 个答案:

没有答案