кросс-браузерный элемент onresize (HTML / JS) - PullRequest
3 голосов
/ 12 апреля 2011

Я знаю, что IE поддерживает событие onresize для любого элемента , в то время как FireFox поддерживает его только для объекта window .

Поскольку мне нужна эта функциональность для любого современного браузера, я в настоящее время использую (довольно быстрый) интервальный таймер, который постоянно проверяет clientWidth / clientHeight элемента для эмуляции onresize.Конечно, это очень неэффективно, и я хотел бы знать, есть ли кросс-браузерный способ, который делает это.Или, в качестве альтернативы, другие методы, которые работают в FF / WebKit / IE, так что метод timer можно использовать в качестве запасного варианта для оставшихся браузеров.

Ориентация на простой JavaScript вместо JQuery / Prototype и т. Д.*

1 Ответ

0 голосов
/ 15 февраля 2013

Если вы не хотите использовать 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 = resize;

Похоже, другого пути нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...