Контейнер с липкой прокруткой не работает в IE - PullRequest
2 голосов
/ 30 декабря 2011

По какой-то причине это работает во всех основных браузерах, но не в IE (удивление, удивление).

$(function() {
var stickyDiv = $('#js-sticky-wrap'); // div to clone
var clonedCss = 'js-sticky-fix'; // css class with fixed positioning
stickyContainer(stickyDiv, clonedCss);

function stickyContainer(stickyDiv, clonedCss, clonedWidth) {
    if (clonedWidth === undefined) { // use original container width
        var clonedWidth = $(stickyDiv).width();
    }

    var menuTop = stickyDiv.offset().top; // Capture visible content height
    var menuClone = stickyDiv.clone(true).addClass(clonedCss); // Clone current div, apply fixed style
    var dropShadow = $('<div class="js-drop-shadow"></div>').hide();
    // Append dropshadow style
    stickyDiv.append(dropShadow);

    $(window).bind('scroll', function() {
        var scrollY = window.pageYOffset; // get total px from vertical scroll
        if (scrollY > menuTop) { // they scrolled > than the original offset
            if (menuClone.parent().length === 0) {
               stickyDiv.addClass(clonedCss).width(clonedWidth);
                menuClone.after(stickyDiv.parent());
                dropShadow.show();
            }
        } else {
            stickyDiv.removeClass(clonedCss);

            dropShadow.hide();
            menuClone.remove();
        }

    });
}

});

Пример для jsfiddle

Есть ли метод, который просто не поддерживается в IE, который я использую?Кажется, я не могу это объяснить, поскольку я не получаю никаких ошибок в инструментах разработчика.

1 Ответ

2 голосов
/ 30 декабря 2011

window.pageYOffset не поддерживается IE до версии 9. Попробуйте использовать его следующим образом:

var scrollY;
if (typeof(window.pageYOffset) == 'number') {
    scrollY = window.pageYOffset;
}
else {
    scrollY = document.documentElement.scrollTop;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...