@eugene_d_dev

Как правильно использовать addEventListener?

Верстаю сайт, на котором будет использовано приличное количество анимации. Так вот, необходимо поддержка старых версий браузеров. Анимация будет происходить в основном по событию. Как мне стало известно, старые браузеры не поддерживают многоступенчатые функции по событию на одном элементе. Поэтому при ресайзе окна браузера, например, нужно все функции вызывать в одном месте. Допустим, есть скрипт-слайдер. Внутри него я обычно писал вложенную функцию, которая обновляла определенные параметры для слайдера в зависимости от текущих параметров браузера и была привязана к событию risize. То есть при ресайзе, например, родительский блок менял высоту. В чем идея? - Когда эта функция вызывалась внутри этой функции, вызывался лишь маленький клочок кода, который обновлял значения переменных, используя локальные переменные, не создавая ничего и не делая переинициализацию переменных. Допустим
function slider(){
var per1 = alalslalsal;
var per2 = kakakakaka;
var per3 = jujujujujuju;

function getProp(){
     per3 = kkk.offsetHeight; // При ресайзе используем переменные выше и выполняем только маленький клочок кода
}
window.addEventListener("resize",getProp);

function action(){
   Работа слайдера
}
button.addEventListener("click",action);
}
window.addEventListener("load",s;ider);


Что посоветуете?)) Надеюсь понятно объяснил) Все функции, которые должные измениться при ресайзе мне нужно поместить в одну -
window.onresize = function(){
      Сюда!!!!!!!!!!!!!
       function1();
       function2();
      function3();
      и т.д.
}


Вы же понимаете, что при таком вызове скрипт пересоздаст переменные, сделает перевыбор селектор, пересчитает значения и т.д. Если, например сделать флаг, что функция была запущена и не надо их заново создавать, то их почему-то не видно.
  • Вопрос задан
  • 1233 просмотра
Пригласить эксперта
Ответы на вопрос 1
madmages
@madmages
Человек прямоходящий
во первых
если есть нужда поддерживать старые браузеры то рекомендую обратить внимание на обработку эвентов не через addEventListener а накидыванием html атрибота на элемент. таким образом уходит вероятность множественного срабатывания (вдруг гдето ошибка в коде) и старые браузеры потянут тока в путь.

во вторых
я так и не нашел в вашем тексте явного вопроса
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы