Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как проверить, есть ли скроллбар (https://javascript.ru/forum/events/16714-kak-proverit-est-li-skrollbar.html)

shaltay 19.04.2011 04:24

Как проверить, есть ли скроллбар
 
Доброго времени, товарищи.
Такая проблема, для меня не тривиальная:
нужно проверить, появился ли скроллбар на сайте. Если есть полоса прокрутки, то надо выполнить определенное действие. Может быть, можно так: если ширина страницы больше 100%, то выполнить действие?
Нужно зафиксировать контент в браузере чтобы он не сдвигался в сторону при появлении полосы прокрутки. Может, есть другие решения?

в общем, грубо говоря человеческим языком, должно выглядеть так:
if('scrollbar' == true){
'do something';
}

ksa 19.04.2011 09:13

shaltay, может таки вёрстку нормальную сделать?

shaltay 19.04.2011 11:42

Да вот не могу я найти решения в верстке. Ни один форум пока не помог. Если сайт центрирован, то центр разный с прокруткой и без.
И все-таки, можно как-то детерминировать скроллбар?

Kolyaj 19.04.2011 11:44

Цитата:

Сообщение от shaltay
Может, есть другие решения?

Сделать, чтобы скролбар был всегда.

shaltay 19.04.2011 12:09

Цитата:

Сообщение от Kolyaj (Сообщение 101346)
Сделать, чтобы скролбар был всегда.

Не хочу. Когда он пустой, как-то не красиво выглядит. Я думал, что никак нельзя сделать, пока не обратил внимание на прокрутку vkontakte.ru. Она там здорово сделана. ничего никуда не едет, она появляется и исчезает почти незаметно для глаз. И даже пропадает, когда открываются мелкие окошки поверх основной страницы. типа создания списков и тд.

shaltay 19.04.2011 12:17

Нашел в коде вконтакте вот такую штуку:
<body onresize="onBodyResize()" class="is_rtl">

Что бы это могло значить?

Matre 19.04.2011 12:35

if (document.body.scrollWidth > document.body.offsetWidth) ...;

shaltay 19.04.2011 17:09

Цитата:

Сообщение от Matre (Сообщение 101358)
if (document.body.scrollWidth > document.body.offsetWidth) ...;

Сделал:
if (document.body.scrollWidth > document.body.offsetWidth){
alert('yo!!!');
}


ничего не произошло. Прокрутка есть.. Так же пробовал со scrollHeight.

goldserg 19.04.2011 18:04

Сталкивался с проблемой.

Для большинства браузеров делается скролинг (пусть пустой будет)
Для оперы.
if (opera) {
if (document.body.scrollHeight > window.innerHeight && (!document.body.style.paddingRight || document.body.style.paddingRight == scrollWidth+"px"))
document.body.style.paddingRight = "0px";
if (document.body.scrollHeight < window.innerHeight)
document.body.style.paddingRight = this.scrollWidth+"px";
}

что-то типа этого вешается на onresize

shaltay 20.04.2011 14:56

неужели нет кроссбраузерного решения?


Часовой пояс GMT +3, время: 12:32.