Как определить размер окна в IE
От: Korch76  
Дата: 21.09.07 08:27
Оценка:
Есть задача: растянуть апплет на всё окно браузера.
Сейчас сделано так: у апплета выставлены ширина и высота 100%.
Проблема: IE не ресайзит апплет если меняется ТОЛЬКО вертикальный размер окна

Поэтому вопрос: как можно узнать размер (высоту) клиентской области окна?
Re: Как определить размер окна в IE
От: DSD Россия http://911.ru/cv
Дата: 21.09.07 09:04
Оценка:
Здравствуйте, Korch76, Вы писали:

K>как можно узнать размер (высоту) клиентской области окна?


Без скроллбаров так:
var client_width=document.body.style.marginLeft+
                 document.body.style.borderLeftWidth+
                 document.body.clientWidth+
                 document.body.style.borderRightWidth+
                 document.body.style.marginRight;
var client_height=document.body.style.marginTop+
                  document.body.style.borderTopWidth+
                  document.body.clientHeight+
                  document.body.style.borderBottomWidth+
                  document.body.style.marginBottom;


Со скроллбарами:
  var cr=document.body.getBoundingClientRect();
  var client_width=cr.right-cr.left;
  var client_height=cr.bottom-cr.top;
--
DSD
Re[2]: Как определить размер окна в IE
От: Korch76  
Дата: 21.09.07 09:24
Оценка:
Здравствуйте, DSD, Вы писали:

DSD>Без скроллбаров так:

DSD>
DSD>var client_width=document.body.style.marginLeft+
DSD>                 document.body.style.borderLeftWidth+
DSD>                 document.body.clientWidth+
DSD>                 document.body.style.borderRightWidth+
DSD>                 document.body.style.marginRight;
DSD>var client_height=document.body.style.marginTop+
DSD>                  document.body.style.borderTopWidth+
DSD>                  document.body.clientHeight+
DSD>                  document.body.style.borderBottomWidth+
DSD>                  document.body.style.marginBottom;
DSD>


Не работает если контент документа меньше чем размер окна
Может подскажите как растянуть документ на всё окно?

DSD>Со скроллбарами:

DSD>
DSD>  var cr=document.body.getBoundingClientRect();
DSD>  var client_width=cr.right-cr.left;
DSD>  var client_height=cr.bottom-cr.top;
DSD>


Скроллбаров нету.
Re[3]: Как определить размер окна в IE
От: DSD Россия http://911.ru/cv
Дата: 21.09.07 09:45
Оценка:
Здравствуйте, Korch76, Вы писали:

K>Не работает если контент документа меньше чем размер окна

K>Может подскажите как растянуть документ на всё окно?
<body style="width:100%;height:100%">

по идее должно хватить... хотя у меня работает и так, даже если контент меньше...

K>Скроллбаров нету.

ну значит они и не посчитаются.
--
DSD
Re[4]: Как определить размер окна в IE
От: SeLarin Россия http://selarin.livejournal.com
Дата: 21.09.07 19:58
Оценка:
Здравствуйте, DSD, Вы писали:

<body style="width:100%;height:100%">

DSD>по идее должно хватить... хотя у меня работает и так, даже если контент меньше...
Еще то же самое надо сделать и для родителя body: html.
... << RSDN@Home 1.2.0 alpha rev. 756>>
Re: Как определить размер окна в IE
От: ddocker Россия www.codelab.ru
Дата: 22.09.07 06:54
Оценка:
K>Поэтому вопрос: как можно узнать размер (высоту) клиентской области окна?
http://codelab.ru/s/javascript/image_autopopup_review/
Re[5]: Как определить размер окна в IE
От: DSD Россия http://911.ru/cv
Дата: 03.10.07 07:09
Оценка:
Здравствуйте, SeLarin, Вы писали:

SL>Еще то же самое надо сделать и для родителя body: html.

это еще зачем?
--
DSD
Re[6]: Как определить размер окна в IE
От: SeLarin Россия http://selarin.livejournal.com
Дата: 03.10.07 07:36
Оценка:
Здравствуйте, DSD, Вы писали:

DSD>Здравствуйте, SeLarin, Вы писали:


SL>>Еще то же самое надо сделать и для родителя body: html.

DSD>это еще зачем?
100% для body будет вычисляться от размеров предка, и если не задать высоту для html, то о размерах предка (html) браузер ничего не знает, поэтому и вычислить размер body не может. Если задать 100% для html, то его высоту браузер уже вычислить может легко (он всегда знает размер окна) и уже дальше спокойно может вычислять все последующие размеры. Прочитал у Салагаева (в конце части «Раскладка»).
Re[7]: Как определить размер окна в IE
От: DSD Россия http://911.ru/cv
Дата: 03.10.07 08:41
Оценка:
Здравствуйте, SeLarin, Вы писали:

SL>100% для body будет вычисляться от размеров предка, и если не задать высоту для html, то о размерах предка (html) браузер ничего не знает, поэтому и вычислить размер body не может. Если задать 100% для html, то его высоту браузер уже вычислить может легко (он всегда знает размер окна) и уже дальше спокойно может вычислять все последующие размеры. Прочитал у Салагаева (в конце части «Раскладка»).


Вообще-то это все очень странно. Ибо:
1. <HTML> не является визуальным элементом.
2. По DOM, родительским элементом для объекта body является объект document.
3. ни разу не видел, чтобы <body style="width:100%"... не работало или хоть как-нибудь глючило. ибо в визуальной иерархии родителем body и есть окно.

это все по крайней мере для IE(а ваш Салагаев предлагал эти трюки именно для него).

P.S.
В MSDN у тега HTML нет свойств width и height — ни прямых, ни в CSS-аттрибутах.
есть только набор: clientHeight, clientLeft, clientTop, clientWidth, scrollHeight, scrollLeft, scrollTop, scrollWidth.
да и то, с сомнительной полезностью...
--
DSD
Re[8]: Как определить размер окна в IE
От: SeLarin Россия http://selarin.livejournal.com
Дата: 03.10.07 10:21
Оценка:
Здравствуйте, DSD, Вы писали:

DSD>Вообще-то это все очень странно. Ибо:


Мда... Странная иерархия у IE (да и он сам, честно говоря…). Сейчас посмотрел в IE7 body имеет постоянные размеры независимо от указания для body height и width. Вот в таком коде текст, как оказалось, не переносится в IE (и переносится в Opera 9 и Firefox 2). В IE также не видно границы, заданной для html (ибо невизуальный!) и естественно, высоту менять там нечему…
<html>
  <head>
    <style type="text/css">
      html {border: 1px solid blue; height: 85%; width: 95%}
      body {border: 1px solid red; margin: 0; padding: 0; width: 20%; height: 100%}
    </style>
  </head>
  <body>
    <p>Just a test! Just a test! Just a test! Just a test! Just a test! Just a test!
Just a test! Just a test! Just a test! Just a test! Just a test! Just a test! Just a test!
 Just a test! Just a test! Just a test! Just a test! Just a test! Just a test! Just a test!
 Just a test! Just a test! Just a test! Just a test! Just a test! Just a test! Just a test!
 Just a test! Just a test! Just a test! Just a test! Just a test! Just a test! Just a test!
 Just a test! Just a test! Just a test! Just a test! Just a test! Just a test! Just a test!
 Just a test! Just a test! Just a test! Just a test! Just a test! Just a test! Just a test!
Just a test! </p>
  </body>
</html>

Параллельно оказалось, что если не указать высоту для html, то высота для боди рассчитается нормально, так что height: 100% действительно необязателен.

DSD>это все по крайней мере для IE(а ваш Салагаев предлагал эти трюки именно для него).

Вот как раз html {height: 100%} предлагался не только для IE. Для IE предлагалось много других трюков…

Но я думаю к вопросу о высоте окна в IE всё это уже не имеет никакого отношения…
Re[8]: Как определить размер окна в IE
От: Аноним  
Дата: 03.10.07 17:03
Оценка:
Здравствуйте, DSD, Вы писали:

DSD>3. ни разу не видел, чтобы <body style="width:100%"... не работало или хоть как-нибудь глючило. ибо в визуальной иерархии родителем body и есть окно.


Я видел — не работало height: 100% в Opera (то ли 7, то ли 8) без указания стиля для элемента html в css. (width: 100% — работало)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.