设置向左滚动以在刷新不起作用时从零开始

时间:2012-11-12 17:31:12

标签: javascript jquery

为什么这不会在IE中工作,如果我将滚动条移动到中间然后刷新它将不会重置为零,而是保持在最后一个位置?

$(document).ready(function(){

    $(window).scrollLeft(0);


});

由于

3 个答案:

答案 0 :(得分: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。这就是为什么在150ms之后无论如何都是无限制的处理程序。

答案 1 :(得分:1)

尝试

$(window).load(function(){
    $('body, html').scrollLeft(0);
});

答案 2 :(得分:0)

尝试

$(document).ready(function(){
    $('body, html').scrollLeft(0);
});