Как отключить полосы прокрутки с помощью JavaScript? - PullRequest
4 голосов
/ 07 января 2009

Мне нужно заблокировать полосы прокрутки браузера, когда я показываю div, который представляет модальное окно только в Internet Explorer 7. Погуглив, я обнаружил, что могу использовать document.body.style.overflow='hidden', но это не работает для IE7. Я также попробовал с document.body.scroll="no", который работает, но только после того, как я наведу курсор на полосу прокрутки:

Кто-нибудь знает лучший подход?

Thansks

Ответы [ 4 ]

13 голосов
/ 08 января 2009

Чтобы ответить на ваши различные вопросы (в том числе в другом комментарии), я думаю, вы используете неправильный метод позиционирования.

Попробуйте position:fixed. Это в основном то же самое, что и position:absolute, за исключением того, что это относительно абсолютного окна просмотра. То есть: если пользователь прокручивает, элемент остается на том же месте на экране.

Итак, помня об этом, вы можете выложить position:fixed оверлей. Внутри этого вы можете иметь модальный ящик position:absolute (или fixed, если хотите) - не должен иметь значение)

2 голосов
/ 07 января 2009

Установите ваш модальный оверлейный div, чтобы заполнить тело, поэтому даже если они прокручивают, они ничего не могут сделать, потому что все скрыто под ним.

0 голосов
/ 25 марта 2010

Это может помочь вам:

documentOBJ = {
    /*Width and Height of the avaible viewport, what you'r seeing*/
    window : {
        x : function(){return (document.documentElement && document.documentElement.clientWidth) || window.innerWidth || self.innerWidth || document.body.clientWidth; },
        y : function(){return (document.documentElement && document.documentElement.clientHeight) || window.innerHeight || self.innerHeight || document.body.clientHeight;}
    },

    /*Scroll offset*/ 
    scroll : {
        x : function(){return ( document.documentElement && document.documentElement.scrollLeft) || window.pageXOffset || self.pageXOffset || document.body.scrollLeft; },
        y : function(){return ( document.documentElement && document.documentElement.scrollTop) || window.pageYOffset || self.pageYOffset || document.body.scrollTop; }
    },

    /*Height and width of the total of the xhtml in a page*/
    page : {
        x : function(){return (document.documentElement && document.documentElement.scrollWidth) ? document.documentElement.scrollWidth : (document.body.scrollWidth > document.body.offsetWidth) ? document.body.scrollWidth : document.body.offsetWidth; },
        y : function(){return (document.documentElement && document.documentElement.scrollHeight) ? document.documentElement.scrollHeight : (document.body.scrollHeight > document.body.offsetHeight) ? document.body.scrollHeight : document.body.offsetHeight; }
    },
    pointer : {}
}
0 голосов
/ 08 января 2009

Вы также можете скрыть полосы прокрутки, используя overflow:hidden, чтобы пользователь не видел полосы прокрутки, чтобы не поддаваться искушению прокручивать:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...