Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Определить размер окна при ресайзе. (https://javascript.ru/forum/events/8215-opredelit-razmer-okna-pri-resajjze.html)

Punk T-34 15.03.2010 12:32

Определить размер окна при ресайзе.
 
Есть кусочек кода, который выкидывает системное сообщение при каждом ресайзе окна браузера. Плюс, в начале кода я объявил функцию (screenSize) для считывания размеров окна, но пока что она не вызывается. А работает только функция message:
function screenSize() {
    var w, h;
    w = (window.innerWidth ? window.innerWidth : (document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.offsetWidth));
    h = (window.innerHeight ? window.innerHeight : (document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.offsetHeight));
    return {w:w, h:h}; 
}
window.onresize = message;
function message() {
   alert("successfully resized");
}

когда же я пытаюсь в событии onresize вызватьобъявленную функцию screenSize, то тут уже не всё так гладко:
function screenSize() {
    var w, h;
    w = (window.innerWidth ? window.innerWidth : (document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.offsetWidth));
    h = (window.innerHeight ? window.innerHeight : (document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.offsetHeight));
    return {w:w, h:h}; 
}
window.onresize = message;
function message() {
   alert("successfully resized");
   document.write(
       "Длина = " + screenSize().w + "px<br>" +
       "Высота = " + screenSize().h + "px"
   );
}

В результате много глюков:
– после ресайза окна в браузере выводится только первая строчка из двух, со значением длины: "Длина = " — второй не видно;
– при повторном ресайзе, значение "Длина = " + screenSize().w не меняется;
– при первом ресайзе системное сообщение показывается, а при повторных — уже нет.

Из-за чего это? Вроде бы всё просто написано. Не вижу, где здесь может быть ошибка…

Kolyaj 15.03.2010 12:36

http://alljs.ru/2009/12/document-write/

Punk T-34 15.03.2010 12:41

хм, а ошибка только в выводе на экран? (document.write)
Если так, то для меня это не принципиально. document.write я использовал чисто для проверки работы функции screenSize. Просто нужно было знать срабатывает событие или нет?
Если срабатывает, то я буду передавать переменные высоты и ширины экрана во флеш. И на этом всё.

P.S. Может, есть более простые способы проверки?

Kolyaj 15.03.2010 12:45

Цитата:

Сообщение от Punk T-34
хм, а ошибка только в выводе на экран?

document.write уберите, чтобы понять.

Цитата:

Сообщение от Punk T-34
P.S. Может, есть более простые способы проверки?

Проверки чего? Срабатывает ли событие resize? Срабатывает.


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