Как узнать, присутствует ли в окне полоса прокрутки или нет?
Собсно, сабж.
А вообще мне просто нужно узнать, сколько символов может влезть в клиентскую область ДО ТОГО, как появится полоса прокрутки. ДЛя этого я циклом увеличиваю строку на один символ и меняю текст документа с помощью document.getElementById('здесь id body').innerHTML="это строка, которая всякий раз увеличивается на один символ" Ну, вот, как полоса прокрутки появится- символы более не влезают. Количество итераций цикла есть искомое число. Спасибо P. S. В инете полно ифы на тему как убрать скролл да как изменить, а как узнать есть он или нет, что-то я не нашёл, извините. |
https://developer.mozilla.org/en/DOM...t.scrollHeight
https://developer.mozilla.org/en/DOM...t.offsetHeight Если они не сходятся (с учетом паддингов/маргинов) -- то полоса прокрутки есть |
Ну мне сложно реализовать эту штуку. Понимаете, как только я что-нибудь пишу в тексте, у меня срузу менятся scrollHeight. Было, к примеру, ноль, стало 121
Надо плясать от того, что обозначает scrollHeight. А что оно обозначает? ВЫсота блока с учётом скроллинга... http://www.easywebscripts.net/javascript/height.php Так у меня скроллинг не появляется, полосы прокрутки как не было, так и нет, а scrollHeight меняется. В общем, непонимание И потом. scrollHeight это высота, так ведь? А у меня строчка если не войдёт в окно браузера, то должна измениться ширина, а не высота Должна да не обязана. document.body.scrollWidth и document.body.offsetWidth НЕ МЕНЯЮТСЯ, каким бы большим не был появившийся скроллинг... (ширину который регулирует) Извините, в общем. |
Вот, ребята, я написал код с пояснениями. Там же и возникший вопрос и все комментарии.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> <title>Документ без названия</title> <style type="text/css"> body { font: 100px Verdana, Arial, Helvetica, sans-serif; background-color: #000000; } body,td,th { color: #FFFFFF; } </style></head> <script> function f () { //Это вот начальная строка, будет просто цифра 1 var stroka="1" //Вот эти две штуки друг другу равны сперва alert ("document.body.offsetWidth вне цикла= "+document.body.offsetWidth) alert ("document.body.scrollWidth вне цикла= "+document.body.scrollWidth) //Теперь будем заполнять строку символами. Как только offsetWidth!=scrollWidth, заполнять перестанем while (document.body.offsetWidth== document.body.scrollWidth) { stroka+="1" document.getElementById('body').innerHTML = stroka //Вот эта штука должна увеличиваться, как только появится полоса горизонтальной прокрутки, но она не увеличивается //В огненной лисе! //А в осле ситуация тожн смешная. С появлением полосы прокрутки, document.body.scrollWidth, как ей и положено, //увеличивается. Но одновременно с этим увеличивается и document.body.offsetWidth! //Что же делать, друзья? //Мне надо выводить строку, пока не появится полоса прокрутки! //В общем, выручайте alert ("в цикле= document.body.scrollWidth"+document.body.scrollWidth) alert ("в цикле= document.body.offsetWidth"+document.body.offsetWidth) } } </script> <body id="body" onload="f()"> </body> </html> |
Цитата:
|
Зачем фон? Цвет фона что ли?
НО как бы то ни было, documentElement помогло в обоих браузерах! Только надо условие так записать: document.documentElement.offsetWidth>= document.documentElement.scrollWidth И всё будет ОК. Спасибо! |
Цитата:
|
Часовой пояс GMT +3, время: 13:13. |