Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 21.01.2009, 10:28
...
Отправить личное сообщение для Zibba Посмотреть профиль Найти все сообщения от Zibba
 
Регистрация: 13.10.2008
Сообщений: 225

А нельзя как вариант использовать определение размеров рабочей области браузера как нибудь так:

var g = {};

if(window.innerWidth){// Все браузеры кроме IE
	g.width = window.innerWidth;
	g.height = window.innerHeight;
} else if (document.documentElement && document.documentElement.clientWidth){
	// Эти ф-ции для IE6 и документов с объявлением DOCTYPE
	g.width = document.documentElement.clientWidth;
	g.height = document.documentElement.clientHeight;
} else if (document.body.clientWidth){
	// Эти ф-ции для IE4, IE5 и IE6 без объявления DOCTYPE
	g.width = document.body.clientWidth;
	g.height = document.body.clientHeight;
}


И дожидаться загрузки документа не придется.
Хотя с рекламой от google не сталкивался, так что не заю поможет ли.
Ответить с цитированием
  #12 (permalink)  
Старый 21.01.2009, 14:10
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Получить размеры body можно только после загрузки документа.
Ответить с цитированием
  #13 (permalink)  
Старый 21.01.2009, 14:23
...
Отправить личное сообщение для Zibba Посмотреть профиль Найти все сообщения от Zibba
 
Регистрация: 13.10.2008
Сообщений: 225

Ну так в моем случае
// Эти ф-ции для IE4, IE5 и IE6 без объявления DOCTYPE
g.width = document.body.clientWidth;
g.height = document.body.clientHeight;


Т.е. если нет объявления DOCTYPE то топик стартеру должно подойти , а что ему мешает его не делать!?)
Ответить с цитированием
  #14 (permalink)  
Старый 21.01.2009, 14:49
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Zibba,
перечитайте еще раз
Сообщение от Octane
Получить размеры body можно только после загрузки документа.
Ответить с цитированием
  #15 (permalink)  
Старый 21.01.2009, 15:12
...
Отправить личное сообщение для Zibba Посмотреть профиль Найти все сообщения от Zibba
 
Регистрация: 13.10.2008
Сообщений: 225

Kolyaj,
Извиняюсь, я напортачил в изложении своей мысли. Я имел ввиду что способ:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
		<title>Untitled Document</title>
	</head>
	<body>
		<script type="text/javascript">
		function getGeometry(){// Функция определения размеров клиентской области окна
			var g = {};

			if(window.innerWidth){// Все браузеры кроме IE
				g.width = window.innerWidth;
				g.height = window.innerHeight;
			} else if (document.documentElement && document.documentElement.clientWidth){
				// Эти ф-ции для IE6 и документов с объявлением DOCTYPE
				g.width = document.documentElement.clientWidth;
				g.height = document.documentElement.clientHeight;
			} else if (document.body.clientWidth){
				// Эти ф-ции для IE4, IE5 и IE6 без объявления DOCTYPE
				g.width = document.body.clientWidth;
				g.height = document.body.clientHeight;
			}

			return g;
		}
			
		var g = getGeometry();
		alert(g.width + '\n' + g.height);
		</script>
	</body>
</html>

Будет работать в IE6+ и всех остальных браузерах. (Ну покрайней мере у меня каким то чудодейственным способом работает )
Не думаю что топик стартеру нужно осуществлять это и для такого старья как IE5--

P.S. Если я снова ступил, то тыкинте прямо носом в точку ошибки и разъясните, а то так и не поняв не смогу спать спокойно

Последний раз редактировалось Zibba, 21.01.2009 в 15:14.
Ответить с цитированием
  #16 (permalink)  
Старый 21.01.2009, 15:25
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Zibba, размеры <body> и <html> можно узнать только после загрузки документа! То есть документ будет уже закрыт для записи в поток и document.write, который есть в Google-скриптах, перезапишет весь документ.
Ответить с цитированием
  #17 (permalink)  
Старый 21.01.2009, 15:44
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Браузер сам не знает размеры документа, пока он полностью не загружен (что не удивительно).
Ответить с цитированием
  #18 (permalink)  
Старый 21.01.2009, 15:46
...
Отправить личное сообщение для Zibba Посмотреть профиль Найти все сообщения от Zibba
 
Регистрация: 13.10.2008
Сообщений: 225

Ну так а я в своем примере и не узнаю размеры <body> и <html>, а размеры рабочей клиентской области окна браузера, т.е. в приведенный мной код ничего не мешает дальше в теле <body></body> после вызова функции получения ширины и высоты (в данном случае автору требуется только ширина), исполнить еще один блок <script></script> в том числе и с document.write.

Т.е. у меня код:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
		<title>Untitled Document</title>
	</head>
	<body>
		<script type="text/javascript">
		function getGeometry(){// Функция определения размеров клиентской области окна
			var g = {};

			if(window.innerWidth){// Все браузеры кроме IE
				g.width = window.innerWidth;
				g.height = window.innerHeight;
			} else if (document.documentElement && document.documentElement.clientWidth){
				// Эти ф-ции для IE6 и документов с объявлением DOCTYPE
				g.width = document.documentElement.clientWidth;
				g.height = document.documentElement.clientHeight;
			} else if (document.body.clientWidth){
				// Эти ф-ции для IE4, IE5 и IE6 без объявления DOCTYPE
				g.width = document.body.clientWidth;
				g.height = document.body.clientHeight;
			}

			return g;
		}
			
		var g = getGeometry();
		alert(g.width + '\n' + g.height);
		</script>
		
		<script type="text/javascript">
			document.write("Hello World !!!");
		</script>
	</body>
</html>


выводит сначало ширину и высоту рабочей области, потом выполняет document.write, вроде все работает O_o
P.S. Наверное я совсем дубовый

P.P.S. Но если у топикстартера страница состоит из нескольких фреймов, то да, тогда данный способ ему не подойдет.

Последний раз редактировалось Zibba, 21.01.2009 в 16:24.
Ответить с цитированием
  #19 (permalink)  
Старый 21.01.2009, 16:30
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Zibba
Наверное я совсем дубовый
Да не В таком случае будет работать. Но это все бессмысленно, ибо пользователь может потом развернуть окно (как и случается в большинстве случаев в ИЕ6).

Лечить надо причину, а не следствие.
Ответить с цитированием
  #20 (permalink)  
Старый 21.01.2009, 17:07
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от Zibba Посмотреть сообщение
Ну так а я в своем примере и не узнаю размеры <body> и <html>
А это что тогда?

Сообщение от Zibba Посмотреть сообщение
else if (document.documentElement && document.documentElement.clientWidth){
				// Эти ф-ции для IE6 и документов с объявлением DOCTYPE
				g.width = document.documentElement.clientWidth;
				g.height = document.documentElement.clientHeight;
			} else if (document.body.clientWidth){
				// Эти ф-ции для IE4, IE5 и IE6 без объявления DOCTYPE
				g.width = document.body.clientWidth;
				g.height = document.body.clientHeight;
			}
А window.innerWidth, который мог бы помочь в данной ситуации, не работает ни в одной из версий IE. И опят же, как сказал Kolyaj, это не решит всех проблем, что делать при ресайзе окна?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование window.open() для позиционирования окна в середине экрана marat-chessman Events/DOM/Window 13 14.08.2011 20:20
Изменение ширины поля input в зависимости от значения AvaGet Общие вопросы Javascript 10 25.12.2008 19:27