0

我有一段代码可以在您悬停元素时滚动页面。发生的一件奇怪的事情是它仅适用于某些浏览器,具体取决于此行中的选择器: var div = $('body'); 在这种情况下使用正文适用于 Chrome,但不适用于 FF。但是,替换bodyhtmlFF 而不是 Chrome 上的作品。

$(document).ready(function () {
    var speed = 10,
        timer;
    $("#hoverscroll").hover(function () {
        $(this).css({cursor: 'none'});
        $(this).css({opacity: '0'});
        var div = $('body');
        (function startscrolling(){
            timer = setTimeout(function () {
                var pos = div.scrollTop();
                div.scrollTop(pos + 1);
                startscrolling();
            }, speed);
        })();
    },

    function () {
        $("#hoverscroll").css({opacity: '1'});
        clearTimeout(timer);
        speed = 10;
    })
    .click(function(){
    });
});
4

1 回答 1

1

你应该使用var div = $(window);

您可以$(window).scrollTop();,因为页面上的滚动条是窗口的一部分,而不是正文或 HTML。

但是,如果一个元素有overflow, 那么它就是 HTML 元素的一部分。这在不同的浏览器中会有所不同。但是,如果您正在滚动文档窗口,则可以使用$(window).scrollTop();跨浏览器兼容的。

于 2013-09-10T01:40:08.547 回答