Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.11.2013, 10:29
Аватар для simple
Профессор
Отправить личное сообщение для simple Посмотреть профиль Найти все сообщения от simple
 
Регистрация: 23.09.2010
Сообщений: 247

onresize выполняется дважды
Доброго дня, кто подскажет почему событие onresize вызывает обработчик 2 раза...
window.onresize = function () {
    alert('resize'); //то же и с console.log и через addEventListener
};

нажимаю F11 или кнопку разворачивание окна и обработчик вызывается 2 раза. Браузер Chrome.
__________________
На начальном этапе события могут казаться случайными, но постепенно проявляется связь, и в конце концов все части целого складываются
Ответить с цитированием
  #2 (permalink)  
Старый 14.11.2013, 11:06
Аватар для jsru_
Кандидат Javascript-наук
Отправить личное сообщение для jsru_ Посмотреть профиль Найти все сообщения от jsru_
 
Регистрация: 09.04.2013
Сообщений: 149

это баг, срабатывает на начало и окончание, используй сеттаймаут
Ответить с цитированием
  #3 (permalink)  
Старый 14.11.2013, 11:21
Аватар для simple
Профессор
Отправить личное сообщение для simple Посмотреть профиль Найти все сообщения от simple
 
Регистрация: 23.09.2010
Сообщений: 247

jsru_ спасибо, события onresizestart видимо в chrome нет? (
__________________
На начальном этапе события могут казаться случайными, но постепенно проявляется связь, и в конце концов все части целого складываются
Ответить с цитированием
  #4 (permalink)  
Старый 14.11.2013, 11:25
Аватар для jsru_
Кандидат Javascript-наук
Отправить личное сообщение для jsru_ Посмотреть профиль Найти все сообщения от jsru_
 
Регистрация: 09.04.2013
Сообщений: 149

simple, не встречал
Ответить с цитированием
  #5 (permalink)  
Старый 14.11.2013, 15:39
Аватар для simple
Профессор
Отправить личное сообщение для simple Посмотреть профиль Найти все сообщения от simple
 
Регистрация: 23.09.2010
Сообщений: 247

да они только в IE похоже есть, еще вопрос по теме, может лучше тогда использовать систему флагов чем таймер?
var flag = true; // global variable;
window.onresize = function () {
    if (flag) {
        alert('resize');
        flag = false;
    } else flag = true;
};

что будет лучше для производительности?
__________________
На начальном этапе события могут казаться случайными, но постепенно проявляется связь, и в конце концов все части целого складываются
Ответить с цитированием
  #6 (permalink)  
Старый 14.11.2013, 15:45
Аватар для simple
Профессор
Отправить личное сообщение для simple Посмотреть профиль Найти все сообщения от simple
 
Регистрация: 23.09.2010
Сообщений: 247

мне кажется onresize автоматом срабатывает на событие keyup и mouseup вот и получается дублирование, вместо onresizestart и onresizeend, ну да ладно.
__________________
На начальном этапе события могут казаться случайными, но постепенно проявляется связь, и в конце концов все части целого складываются
Ответить с цитированием
  #7 (permalink)  
Старый 14.11.2013, 19:25
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

simple, onresize процесс не одномоментный и ассинхронный (посколь перерендиваюца все элементы и по нескольку раз (рекурсивно) для внесения поправок) и при каждом изменении на пиксель может вызывать события

Борьба - мелкой задержкой(cрабатывает по окончании переходных режимов). Ранее в FF алерт в самой функции события( без подобной задержки) вообще вызывал крах браузера (где т в версии 12-13)

var timerId_0=false;
 window.onresize = function () {
 clearTimeout(timerId_0);
 timerId_0 = setTimeout(function () {
    alert('resize'); //то же и с console.log и через addEventListener
 },10)
};

Последний раз редактировалось Deff, 14.11.2013 в 19:58.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как выполняется проверка кода? JGalt Javascript под браузер 0 13.12.2012 18:40
Не выполняется внутри JQuery.post frundik Элементы интерфейса 3 14.08.2012 11:35
JavaScript .then() LaNaite Общие вопросы Javascript 21 30.07.2012 08:06
Собитие click исполняется дважды greynemo jQuery 2 22.08.2011 14:18
Дважды выполняеться animate() dima_mak jQuery 1 08.06.2010 08:12