3

为什么这在 IE 中不起作用,如果我将滚动条移到中间然后刷新它不会重置为零,而是停留在最后离开的位置?

$(document).ready(function(){

    $(window).scrollLeft(0);


});

谢谢

4

3 回答 3

2

该脚本应该可以根据需要工作

$(document).ready(function ()
{
    $(window).bind("scroll", ScrollOnLoad);
    // IE fix, remove scroll handler after 150ms
    setTimeout(UnbindScroll, 150); 
});

function ScrollOnLoad() {
    UnbindScroll();
    $(window).scrollLeft(0);
}

function UnbindScroll() {
    $(window).unbind("scroll", ScrollOnLoad);
}

如您所见,IE 的行为是不同的。它甚至在之后触发scroll事件document.ready。此脚本将连接此事件并scrollLeft(0)在刷新后(在所有浏览器中)。

复杂的部分是,当用户第一次访问该页面时,如何解决新来者。然后 Internet Explorer 不会触发scroll事件。而且我们的处理程序仍在运行(当用户第一次向右滚动时会向左滚动)。

我们必须scrollLeft手动解除绑定。这就是为什么在 150 毫秒之后无论如何处理程序都是无界的。

于 2012-11-12T20:47:15.527 回答
1

尝试

$(window).load(function(){
    $('body, html').scrollLeft(0);
});
于 2013-02-28T14:46:03.683 回答
0

尝试

$(document).ready(function(){
    $('body, html').scrollLeft(0);
});
于 2012-11-12T17:49:38.590 回答