【问题标题】:jQuery $(window).scroll and Internet Explorer (8-9)jQuery $(window).scroll 和 Internet Explorer (8-9)
【发布时间】:2012-12-02 14:12:29
【问题描述】:

http://jsfiddle.net/CbL7W/ 滚动事件行为示例。

我的这个脚本在 Chrome 和 Firefox 中都能正常工作。

var stickyNavigationOffsetTop = $('.top-nav').offset().top;
var stickyNavigation = function () {
    var scrollTop = $(window).scrollTop();
    if (scrollTop > stickyNavigationOffsetTop) {
        $('.top-nav').css({ 'position': 'fixed', 'top': 0, 'left': 0, 'opacity': .8 });
    } else {
        $('.top-nav').css({ 'position': 'relative', 'opacity': 1 });
    }
};
stickyNavigation();
$(window).scroll(function () {
    stickyNavigation();
});

但是 Internet Explorer 有一个小问题: 在同一页面上,我有那个脚本,我有一个带有隐藏 div 的脚本的链接,当这种情况发生时,有时页面会完全滚动回页面顶部,但 IE 在发生这种情况时不会触发$(window).scroll

页面返回顶部时的问题截图。

铬(确定): http://i.stack.imgur.com/6WJx7.jpg

IE(错误): http://i.stack.imgur.com/CXbKk.jpg

【问题讨论】:

  • 我认为当页面变短时不应该发生任何滚动。您可以在删除 div 之前尝试更改 scrolltop。
  • 但是为什么 Chrome 和 Firefox 会触发滚动事件?那个 div 的东西是一个可折叠的部分,实际上并没有删除它,而是隐藏它。
  • 在我的情况下(OP 可能不同)Chrome 和 Firefox 触发滚动事件,因为隐藏 div 会导致滚动条从窗口中移除。这意味着默认情况下滚动位置已更改回0,我说这构成了滚动事件。
  • 没错!但 IE 的人只需要与众不同:P

标签: jquery internet-explorer scroll


【解决方案1】:

我有同样的问题,尽管我不喜欢它,但我的解决方法是在显示/隐藏 div 时触发 window.scroll 事件。 $(window).trigger('scroll');

【讨论】:

  • 它有点工作,呵呵......与blog.project-sierra.de/archives/1559 上看到的 jquery 延迟混合,这是一个很好的解决方法。 IE 对这个解决方案仍然有一点问题,所以我们最后的决定是删除这个粘性导航功能。无论如何感谢您的解决方案!
  • 这个解决方案非常适合我的问题,即当 href 将页面弹出到顶部时 IE 没有触发滚动事件,即使它在现代浏览器中运行良好。
【解决方案2】:

article 上查看此答案

我想改变

$(window).scrollTop() to 
$(document).scrollTop() 

可以解决 IE 问题。

【讨论】:

  • 很抱歉,你们有可以访问的开发页面吗?
猜你喜欢
  • 2012-08-27
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
  • 2015-04-17
  • 1970-01-01
  • 2013-06-10
  • 2012-06-07
  • 1970-01-01
相关资源
最近更新 更多