Все еще сложно определить наличие полосы прокрутки с помощью jQuery?

Я знаю, что обнаружение наличия полосы прокрутки должно быть одной из тех неуловимых вещей, через которые мы все должны пережить. До сих пор я читал, что вы не можете обнаружить присутствие полосы прокрутки, используйте только подсказки в DOM, чтобы узнать, могут ли они присутствовать, и это нельзя сделать менее чем в 30 строках кода.

Сейчас, когда мы находимся в 2010 году, это звучит немного невозможным. Есть ли в jQuery надежное кросс-браузерное решение, которое позаботится об этом и будет работать по крайней мере большую часть времени? Любая помощь, пожалуйста, я дергаю за волосы, половина из них уже на полу.

1 ответ

Решение

Возможно, не так элегантно, как вы надеялись, но это адекватная адаптация из скрипта, который я недавно написал, для расчета высоты области просмотра.

Логично, что вы хотите вызвать эту функцию на document ready а также window resize,

Он также имеет дело с несоответствиями, с которыми вы можете столкнуться в Opera (строка 2) и IE7 (строка 6).

function scrollbar() {
    var viewportHeight = window.innerHeight ? window.innerHeight : $(window).height();

    if (jQuery.browser.msie) {
        if(parseInt(jQuery.browser.version) == 7) {
            viewportHeight -= 3;
        }
    }

    if(viewportHeight <= $('#wrapper').height()) {
        return true;
    } else {
        return false;
    }
}
Другие вопросы по тегам