>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >сокрушительная Реакции браузера на событие $(window).resize http://forum.mozilla-russia.org/viewtopic.php?id=52671 |
Dеff > 03-12-2011 22:26:50 |
Задача стояла зафиксировать и изменения размеров окна браузера и выполнять корректировку стиля Код jQuery Выделить код Код:<script type="text/javascript"> var Onrez=true; $(window).resize(function(){if(Onrez){Onrez=false;alert("resized!");Onrez=false;}}); alert("A") </script> Итоговый Вид краха браузера http://video.yandex.ru/users/hostjs-mybb2011/view/7/ Мгновенный крах происходит при увеличении окна -а при уменьшении - либо со второй попытки, либо при повторе того же самого уменьшения на второй вкладке Плиз? - Кто может посоветовать иные рабочие Варианты данного события: изменения Окна браузера |
banbot > 04-12-2011 00:07:27 |
Тема перенесена из форума «Поддержка пользователей» в форум «Разработка». |
hydrolizer > 04-12-2011 03:17:44 |
Dеff
но на самом деле даже при измении размеров от одиночного клика по кнопке заголовка maximize/restore, обработчик события resize будет вызван энное количество раз. Можно попробовать, например, по вызову обработчика запускать выполнение нужных вам действий асинхронно через setTimeout (или nsITimer, если у вас скрипт работает в chrome-контексте) с таймаутом А, при последующем вызове обработчика проверять разность с временем предыдущего вызова обработчика - если оно меньше B, где В<А, то прерывать асинхронный запуск, сделанный в предыдущем вызове, и запускать новый. Костыль, конечно, но хоть что-то. |
Dеff > 04-12-2011 10:42:07 |
hydrolizer пишет
СПС! |
Dеff > 04-12-2011 11:53:37 |
Найденное решение, благодаря советам: - однозначной реакции на однократное изменение, Выделить код Код:<script> $(window).bind("resize",function(){ //Подключам событие изменение размеров Окна window_resize(); //Вызываем функцию Обработки окна return false}); var resizeTimeoutId; //Таймер задержки исполнения function window_resize() { clearTimeout(resizeTimeoutId); //удаляем все предыдущие события "Дребезга контактов" resizeTimeoutId = setTimeout('alert_And_ResizeCode();', 10); } function alert_And_ResizeCode(){alert("Есть Cмена размера окна ");/*Тут Обработка события*/ }; </script> Легко проверяется изменением размеров окна |