Я пытаюсь определить, есть ли вертикальная полоса прокрутки или нет в окне браузера (если содержимое превышает высоту окна и переполнение). Я пробовал document.body.scrollTop
, window.pageYOffset
, и document.body.style.height
... из них работают!
Выполнение теста window.alert
для переменных, инициализированных этими свойствами, pageYOffset
всегда возвращает независимо от того, есть ли полоса прокрутки или нет, а две другие возвращают то, что кажется пустой String.
Моя единственная идея состоит в том, что, возможно, конфликты позиционирования CSS приводят к этому, но, похоже, таких конфликтов нет ... Любые идеи, решения, обходные пути?Почему scrollTop, pageYOffset и высота не работают?
1
A
ответ
2
Этот
window.innerWidth - document.documentElement.clientWidth
возвращает ширину вертикальной полосы прокрутки браузера-окна, и 0
, если нет прокрутки-бар.
Таким образом, вы могли бы иметь функцию ...
function windowHasVerticalScrollbar() {
return window.innerWidth - document.documentElement.clientWidth > 0;
}
К сожалению, IE8 и IE7 не поддерживает значение window.innerWidth
, поэтому этот метод не будет работать в этих браузерах. (Тем не менее, он работает в IE9 и во всех других браузерах).
Кроме того, поскольку documentElement
является элементом <html>
(корневым элементом веб-страницы), если вы устанавливаете стили для этого элемента (например, поля, абсолютное позиционирование и т. Д.), Расчет может возвращать неверные результаты.
Смежные вопросы
- 1. Неверная высота с scrollTop
- 2. phantomJS/Highcharts: почему 'высота' не работают
- 3. Почему эта высота и ширина Fancybox не работают?
- 4. ScrollLeft ScrollTop, Как они работают?
- 5. Высота и ширина изображения не работают
- 6. Макс-высота и максимальная ширина не работают
- 7. Tkinter Toplevel ширина и высота не работают
- 8. Разрешение шаблона и высота не работают
- 9. Высота и ширина изображения не работают?
- 10. Почему не работают window.scroll() и window.width()?
- 11. Почему scrollByLines и scrollByPages не работают?
- 12. pageyoffset просто остается пустым
- 13. Почему именно .scrollTop(); не работает?
- 14. scrollTop Сломанный: Высота тела 100%, перелива Авто
- 15. pageYOffset скроллинг и анимация в IE8
- 16. Высота заголовка термоусадочной пленки и прокладка на основе scrollTop value
- 17. Процентная маржа сверху и высота не работают вместе
- 18. Высота и заполнение CSS не работают должным образом
- 19. Почему scrollTop не работает в firefox?
- 20. Почему я не могу получить scrollTop()
- 21. Почему не scrollTop изменить -webkit-filter: blur()?
- 22. Почему эта функция Jquery scrollTop не работает?
- 23. JQuery высота документа и высота окна
- 24. scrollTop & scrollLeft не работают на дисплее: скрытые элементы
- 25. Позиционирование и высота не работают правильно в Firefox/IE
- 26. Ширина и высота не работают над тегами 'a'?
- 27. 100% Высота и ширина тега div контейнера не работают
- 28. CSS: 100% ширина и высота фонового изображения не работают
- 29. изображение внутри svg ширина и высота не работают как ожидалось
- 30. iOS Раскадровка: set ImageView ширина и высота не работают
Это потрясающе! Большое вам спасибо за ваши усилия. Это, кажется, серьезная проблема, когда многие люди предлагают использовать любой из вышеупомянутых подходов, которые не работали ... но этот подход работает отлично. Мой единственный вопрос теперь в том, что именно представляет собой 'innerWidth' и' offsetWidth' соответственно? –
@Ian Читать в MDN: ['clientWidth'] (https://developer.mozilla.org/en/DOM/element.clientWidth), [' innerWidth'] (https://developer.mozilla.org/en/ DOM/window.innerWidth). Примечание: теперь я использую 'clientWidth' (вместо' offsetWidth') - теперь он работает и в IE9 –
K. Спасибо за вашу помощь @Sime. –