очередь событий прерывается 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, время: 12:45. |