#html #javascript-events
#javascript #HTML #dom-события
Вопрос:
Я знаю, что IE поддерживает onresize
событие для любого элемента, в то время как FireFox поддерживает его только для window
объекта.
Поскольку мне нужна эта функциональность для любого современного браузера, в настоящее время я использую (довольно быстрый) интервальный таймер, который непрерывно проверяет clientWidth
/ clientHeight
элемента для эмуляции onresize
. Конечно, это очень неэффективно, и я хотел бы знать, существует ли кроссбраузерный способ, который делает это. Или, альтернативно, другие методы, которые работают в Firefox / WebKit / IE, так что метод timer-method можно использовать в качестве запасного варианта для остальных браузеров.
Нацеливание на обычный JavaScript, вместо jQuery / Prototype и т.д.
Ответ №1:
Если вы не хотите использовать jQuery, вы должны проверить, что браузер отправляет вашему скрипту, поэтому:
if(!element.onresize != null) element.onresize = event;
if(!element.onresizeAnotherHandler != null) element.onresizeAnotherHandler = event;
Я не знаю, так ли это просто, но это общая концепция.
РЕДАКТИРОВАТЬ: Похоже, что для Firefox нет обработчика событий. Но есть хитрость:
-
Если вы меняете ширину в своем JS, просто создайте обновление функции
function update(var nx, var ny){ // do something with nx and ny }
-
Если вы добавили дескриптор изменения размера с помощью CSS, сделайте это с помощью JavaScript
-
Если вы используете что-то вроде 80% в своем CSS, тогда обработайте window.onresize:
function resize(){ alert(document.getElementById("test").style.width); }
window.onresize = изменять размер;
Похоже, что другого способа нет.
Комментарии:
1. Что мне нужно, так это прямое событие из браузера, когда элемент изменяет свой размер. AFAIK это доступно только в IE…
2. Похоже, что на данный момент это невозможно.