Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Отслеживаем изменение clientWidth (https://javascript.ru/forum/events/10162-otslezhivaem-izmenenie-clientwidth.html)

Vulkan 22.06.2010 10:01

Отслеживаем изменение clientWidth
 
Здравствуйте, чтобы узнать ClientWidth, пользуюсь такой функцией:
function getClientWidth()
{
  return document.compatMode=='CSS1Compat' && !window.opera?document.     
  documentElement.clientWidth:document.body.clientWidth;
}

Дело в том что мне нужно узнать ширину клиентского окна, вычесть из неё некоторое значение и показать нужный элемент с изменённой шириной, это успешно получается, но дело в том что если например в опере начать раскрывать панель закладок, то элемент уходит за границы сайта, так как изменяется ширина окна, вот поэтому я задумался о том чтобы отслеживать изменение и автоматически менять ширину элемента, вот думаю может записать ширину окна и проверять, только этот вариант мне кажется тупым, т.к. окно клиент может измениться в любую секунду придётся каждую секунду перепроверять:), а это ой как не оптимально, если увеличить промежутки между проверками, то это будет уже будет не актуально и вот может у кого-нибудь есть какие-то идеи и не нужно изобретать велосипед?:)

Skipp 22.06.2010 10:06

Vulkan,
Есть событие onresize, которое срабатывает при изменении размера рабочей области.

Vulkan 22.06.2010 10:18

Цитата:

Сообщение от Skipp (Сообщение 60509)
Vulkan,
Есть событие onresize, которое срабатывает при изменении размера рабочей области.

Большое спасибо за ответ, я даже не знал что разнообразие событий в JS заходит так далеко=). Я погуглил, но не нашёл ответа на ещё один вопросик - может ли это событие показать на сколько изменили окно? Если нет то надо будет запомнить текущую ширину, потом при изменении вызвать функцию getClientWidth(), там вывести текущую ширину, потом вычислить изменение и это изменение добавить к объекту, или просто из новой ширины вычесть нужное мне значение и вписать в ширину объект, я правильно рассуждаю?

Skipp 22.06.2010 10:31

вот тот что после или оптимальный, но есть случаи когда и первый нужен:)

Vulkan 22.06.2010 10:34

Спасибо, Skipp, жаль + не могу поставить, выводит "Вы должны повысить репутацию кому-то ещё, прежде чем...", вопрос закрыт.:)

Skipp 22.06.2010 10:37

Vulkan,
Ну да, потому что последний кому вы ставили плюсик, был я)
Фиг с ним)


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