Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как узнать, присутствует ли в окне полоса прокрутки или нет? (https://javascript.ru/forum/dom-window/8149-kak-uznat-prisutstvuet-li-v-okne-polosa-prokrutki-ili-net.html)

возжаждавший 10.03.2010 18:38

Как узнать, присутствует ли в окне полоса прокрутки или нет?
 
Собсно, сабж.

А вообще мне просто нужно узнать, сколько символов может влезть в клиентскую область ДО ТОГО, как появится полоса прокрутки.

ДЛя этого я циклом увеличиваю строку на один символ и меняю текст документа с помощью

document.getElementById('здесь id body').innerHTML="это строка, которая всякий раз увеличивается на один символ"


Ну, вот, как полоса прокрутки появится- символы более не влезают. Количество итераций цикла есть искомое число. Спасибо

P. S. В инете полно ифы на тему как убрать скролл да как изменить, а как узнать есть он или нет, что-то я не нашёл, извините.

e1f 10.03.2010 18:45

https://developer.mozilla.org/en/DOM...t.scrollHeight
https://developer.mozilla.org/en/DOM...t.offsetHeight

Если они не сходятся (с учетом паддингов/маргинов) -- то полоса прокрутки есть

возжаждавший 10.03.2010 22:10

Ну мне сложно реализовать эту штуку. Понимаете, как только я что-нибудь пишу в тексте, у меня срузу менятся scrollHeight. Было, к примеру, ноль, стало 121

Надо плясать от того, что обозначает scrollHeight. А что оно обозначает?
ВЫсота блока с учётом скроллинга...
http://www.easywebscripts.net/javascript/height.php
Так у меня скроллинг не появляется, полосы прокрутки как не было, так и нет, а scrollHeight меняется.
В общем, непонимание

И потом.
scrollHeight это высота, так ведь?
А у меня строчка если не войдёт в окно браузера, то должна измениться ширина, а не высота

Должна да не обязана.
document.body.scrollWidth и document.body.offsetWidth НЕ МЕНЯЮТСЯ, каким бы большим не был появившийся скроллинг... (ширину который регулирует)
Извините, в общем.

возжаждавший 12.03.2010 22:15

Вот, ребята, я написал код с пояснениями. Там же и возникший вопрос и все комментарии.

<!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>

Kolyaj 12.03.2010 22:29

Цитата:

Сообщение от возжаждавший
//Вот эта штука должна увеличиваться, как только появится полоса горизонтальной прокрутки, но она не увеличивается
//В огненной лисе!
//А в осле ситуация тожн смешная. С появлением полосы прокрутки, document.body.scrollWidth, как ей и положено,
//увеличивается. Но одновременно с этим увеличивается и document.body.offsetWidth!
//Что же делать, друзья?

Выставить фон у body и увидеть, что так оно и есть на самом деле. document.documentElement попробуйте вместо document.body.

возжаждавший 12.03.2010 22:48

Зачем фон? Цвет фона что ли?
НО как бы то ни было, documentElement помогло в обоих браузерах!

Только надо условие так записать:
document.documentElement.offsetWidth>= document.documentElement.scrollWidth

И всё будет ОК. Спасибо!

Kolyaj 12.03.2010 23:00

Цитата:

Сообщение от возжаждавший
Зачем фон?

Чтобы увидеть, что ширина body в FF действительно не увеличивается, но скролится при этом не body, а в IE действительно увеличивается.


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