Обнаружьте, если страница имеет вертикальную полосу прокрутки?

Я просто хочу, чтобы некоторый простой JQ/JS проверил, имеет ли текущая страница/окно (не конкретный элемент) вертикальную полосу прокрутки.

Гугление дает мне материал, который кажется чрезмерно сложным для просто этой основной характеристики.

Как это может быть сделано?

119
задан Woody 27 January 2010 в 12:46
поделиться

3 ответа

$(document).ready(function() {
    // Check if body height is higher than window height :)
    if ($("body").height() > $(window).height()) {
        alert("Vertical Scrollbar! D:");
    }

    // Check if body width is higher than window width :)
    if ($("body").width() > $(window).width()) {
        alert("Horizontal Scrollbar! D:<");
    }
});
93
ответ дан 24 November 2019 в 01:48
поделиться

Попробуйте это:

var hasVScroll = document.body.scrollHeight > document.body.clientHeight;

Это только скажет вам, только если вертикальная прокрутка больше, чем высота видимого контента. Переменная VASVSCROLL будет содержать true или false.

Если вам нужно сделать более тщательную проверку, добавьте следующее в код выше:

// Get the computed style of the body element
var cStyle = document.body.currentStyle||window.getComputedStyle(document.body, "");

// Check the overflow and overflowY properties for "auto" and "visible" values
hasVScroll = cStyle.overflow == "visible" 
             || cStyle.overflowY == "visible"
             || (hasVScroll && cStyle.overflow == "auto")
             || (hasVScroll && cStyle.overflowY == "auto");
74
ответ дан 24 November 2019 в 01:48
поделиться

Я попробовал предыдущий ответ и, похоже, не работает $ («тело»). Высота () не обязательно представляет всю высоту HTML.

Я исправил решение следующим образом:

// Check if body height is higher than window height :) 
if ($(document).height() > $(window).height()) { 
    alert("Vertical Scrollbar! D:"); 
} 

// Check if body width is higher than window width :) 
if ($(document).width() > $(window).width()) { 
    alert("Horizontal Scrollbar! D:<"); 
} 
41
ответ дан 24 November 2019 в 01:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: