А нельзя как вариант использовать определение размеров рабочей области браузера как нибудь так:
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 не сталкивался, так что не заю поможет ли. |
Получить размеры body можно только после загрузки документа.
|
Ну так в моем случае
// Эти ф-ции для IE4, IE5 и IE6 без объявления DOCTYPE g.width = document.body.clientWidth; g.height = document.body.clientHeight; Т.е. если нет объявления DOCTYPE то топик стартеру должно подойти :) , а что ему мешает его не делать!?) |
Zibba,
перечитайте еще раз Цитата:
|
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, размеры <body> и <html> можно узнать только после загрузки документа! То есть документ будет уже закрыт для записи в поток и document.write, который есть в Google-скриптах, перезапишет весь документ.
|
Браузер сам не знает размеры документа, пока он полностью не загружен (что не удивительно).
|
Ну так а я в своем примере и не узнаю размеры <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. Но если у топикстартера страница состоит из нескольких фреймов, то да, тогда данный способ ему не подойдет. |
Цитата:
Лечить надо причину, а не следствие. |
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 04:22. |