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



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Настройте свой модальный оверлей div так, чтобы он заполнял тело, поэтому, даже если они прокручивают, они ничего не могут сделать, потому что все скрыто под ним.
Если вы используете jquery, вы можете просто использовать $ ("body"). Width () и $ ("body"). Height (), чтобы получить ширину и высоту тела кроссбраузерным способом.
Приложение, над которым я работаю, использует Prototype, я не смог найти способ с помощью Prototype получить реальную высоту. Высота 100% тоже не работает. Я исправил это с помощью позиции: исправлено
Чтобы ответить на ваши различные вопросы (в том числе в другом вашем комментарии), я думаю, вы используете неправильный метод позиционирования.
Попробуйте position:fixed. Это в основном то же самое, что и position:absolute, за исключением абсолютного окна просмотра. Т.е. если пользователь прокручивает, элемент остается на том же месте на экране.
Так что с учетом этого можно выложить оверлей position:fixed. Внутри этого у вас может быть модальное окно position:absolute (или снова fixed, если хотите - не должен имеет значение).
Большое спасибо, что проблема решена. Я думал, что знаю о CSS почти все :-P Еще раз спасибо.
Спасибо, я бы никогда не понял этого! Ты спас мою задницу.
Я знал разницу, но не знал, когда использовать каждую из них, пока вы не ответили. Спасибо.
Обратите внимание, что «position: fixed» - одно из свойств CSS2, вызывающих проблемы в IE6. Таким образом, это решение не сработает, если вам нужно поддерживать IE6 в дополнение к IE7.
вы также можете скрыть полосы прокрутки с помощью overflow:hidden, чтобы пользователь не видел их полос прокрутки, поэтому у него не возникнет соблазна ругаться :)
Это может вам помочь:
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 : {}
}
как узнать размер области просмотра в IE7? Я не могу получить реальный размер тела ни с одним из них: window.innerHeight, document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.body.clientHeight Размер страницы составляет около 2000 пикселей