очередь событий прерывается alertом
на iframe привязываю 2 события load и ready (так нужно чтобы кросбраузерно палить когда засабмитится форма в iframe)
так вот я расчитывал на то что эти события в нормальных браузерах выполниться 2 раза а в ие 1 раз (в ие не работает load) все отлично было пока я не вставил в функцию alert 1) выполняется load 2) вызывается alert 3) очередь событий прерывается! 4) ready не вызывается! как захачить? |
0_0 что интересно это как когда происходит!
иногда все норм а иногда очередь сбивается!!! ЗЫ опера ЗЫЗЫ отправил опере на баг трекер. но если кто знает как этот баг фиксится - сразу говорите. я покуда вставил в код костыль if($.browser.opera)... |
нужно палить, когда в iframe загрузиться страничка (в смысле есть же onsubmit формы)?
форма сабмитится всегда, но не всегда возникает событие? и расскажи подробнее, что у тебя происходит (что за форма, почему в iframe сабмитится), может получиться придумать другое решение |
я искал аплоадер плана: гугли в сторону ajax loader
но все что я нашел не кроссбраузерно! поэтому я написал свой задача состояла в том чтобы узнать когда загрузиться файл чтобы рефрешнуть фрейм я эту задачу уже решил для 5 браузеров таким хитрющим методом: код рекурсивен function getContentsAndReload() { if($.browser.msie || $.browser.opera || $.browser.safari) { endLoading = (loadIndex > 0); } else { endLoading = (loadIndex > 1); } if(endLoading) { //... } else { loadIndex++; } } var loadIndex = 0; if($.browser.opera) { $(iframe).load(getContentsAndReload); } else { $(iframe).ready(getContentsAndReload); $(iframe).load(getContentsAndReload); } как видим сплошные костыли но работает кроссбраузерно опера мазила ие сафари гугл хром так что если можеш предложить лучшее решение - фперед |
и не в коем случае не предлагай мне метод который стоит на таймауте и проверяет фрейм - эта ваще гавно, хоть и кроссбраузерное
|
Цитата:
|
тратить лишнее процессорное время на такое глупо
если можно сделать нормальную надежную реализацию без этого *Поэтому Вы сделали свое го*но, некроссбраузерное? если ты пришол сюда сказать какие все говно а ты один умный - ты пришол не по адресу |
как насчет такого варианта? Или объясни нормально, как эти события работают в разных браузерах
var onLoadHandler = onLoad.executeOnce(); $(iframe).ready(onLoadHandler); $(iframe).load(onLoadHandler); Function.prototype.executeOnce = function(){ var f = this; return function(){ if( arguments.callee._executed ) return; var r = f.apply(this, arguments); arguments.callee._executed = true; return r; } }; p.s. когда ты называешь решение, без которого бывает не обойтись (насколько я знаю) говном, а сам предлагаешь хитрющий метод, который кроме всего прочего использует browser detection... ты ждешь, что его назовут как-то по-другому? Цитата:
|
|
Часовой пояс GMT +3, время: 23:07. |