Страницы: 1
Задача стояла зафиксировать и изменения размеров окна браузера и выполнять корректировку стиля
Код 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/
Проверялось в версиях браузера от 3.6 до 8.0
в версиях jQuery от 1.4.4 до 1.6.1
Мгновенный крах происходит при увеличении окна -а при уменьшении - либо со второй попытки, либо при повторе того же самого уменьшения на второй вкладке
Плиз? - Кто может посоветовать иные рабочие Варианты данного события: изменения Окна браузера
Отредактировано Dеff (04-12-2011 12:30:48)
Отсутствует
Тема перенесена из форума «Поддержка пользователей» в форум «Разработка».
Do you feel lucky, punk?
Отсутствует
Dеff
Есть такой баг: https://bugzilla.mozilla.org/show_bug.cgi?id=626963.
Варианты, как избежать последствий бага:
1) не использовать в обработчике модальных диалогов - того же alert'а;
2) если без модальных диалогов никак - попробуйте вызывать их асинхронно;
3) выполнять нужные действия по окончании процесса изменения размеров - хотя в документации и написано, что
The resize event is fired
after
the window has been resized
но на самом деле даже при измении размеров от одиночного клика по кнопке заголовка maximize/restore, обработчик события resize будет вызван энное количество раз. Можно попробовать, например, по вызову обработчика запускать выполнение нужных вам действий асинхронно через setTimeout (или nsITimer, если у вас скрипт работает в chrome-контексте) с таймаутом А, при последующем вызове обработчика проверять разность с временем предыдущего вызова обработчика - если оно меньше B, где В<А, то прерывать асинхронный запуск, сделанный в предыдущем вызове, и запускать новый. Костыль, конечно, но хоть что-то.
Отсутствует
Dеff
Есть такой баг: https://bugzilla.mozilla.org/show_bug.cgi?id=626963.
Варианты, как избежать последствий бага:разность с временем предыдущего вызова обработчика - если оно меньше B, где В<А, то прерывать асинхронный запуск, сделанный в предыдущем вызове, и запускать новый. Костыль, конечно, но хоть что-то.
СПС!
Cобственно попробовал без алерта - (мало чем отличается...
Попробую чисто по таймеру проверять переодически ширину окна, поскольку страшно нарваться на такое дело - много обработки в реальном времени отработки изменения размеров, просто могу не успевать. Главное единственный из пяти браузов с такой реакцией... Хотя нун и в jQuery написать пусть думают( или фиксят в документации
Отредактировано Dеff (04-12-2011 10:42:31)
Отсутствует
Найденное решение, благодаря советам: - однозначной реакции на однократное изменение,
  (*По факту фиксируем завершенность данного события, - * должно быть кроссбраузерно
<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>
Легко проверяется изменением размеров окна
Отредактировано Dеff (13-12-2011 03:34:30)
Отсутствует
Страницы: 1