Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.07.2010, 13:39
Новичок на форуме
Отправить личное сообщение для puchu Посмотреть профиль Найти все сообщения от puchu
 
Регистрация: 15.07.2010
Сообщений: 8

очередь событий прерывается alertом
на iframe привязываю 2 события load и ready (так нужно чтобы кросбраузерно палить когда засабмитится форма в iframe)

так вот я расчитывал на то что эти события в нормальных браузерах выполниться 2 раза а в ие 1 раз (в ие не работает load)

все отлично было пока я не вставил в функцию alert
1) выполняется load
2) вызывается alert
3) очередь событий прерывается!
4) ready не вызывается!

как захачить?
Ответить с цитированием
  #2 (permalink)  
Старый 15.07.2010, 13:47
Новичок на форуме
Отправить личное сообщение для puchu Посмотреть профиль Найти все сообщения от puchu
 
Регистрация: 15.07.2010
Сообщений: 8

0_0 что интересно это как когда происходит!
иногда все норм а иногда очередь сбивается!!!

ЗЫ опера
ЗЫЗЫ отправил опере на баг трекер. но если кто знает как этот баг фиксится - сразу говорите. я покуда вставил в код костыль if($.browser.opera)...

Последний раз редактировалось puchu, 15.07.2010 в 14:22.
Ответить с цитированием
  #3 (permalink)  
Старый 15.07.2010, 17:33
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

нужно палить, когда в iframe загрузиться страничка (в смысле есть же onsubmit формы)?
форма сабмитится всегда, но не всегда возникает событие?
и расскажи подробнее, что у тебя происходит (что за форма, почему в iframe сабмитится), может получиться придумать другое решение
Ответить с цитированием
  #4 (permalink)  
Старый 15.07.2010, 17:42
Новичок на форуме
Отправить личное сообщение для puchu Посмотреть профиль Найти все сообщения от puchu
 
Регистрация: 15.07.2010
Сообщений: 8

я искал аплоадер плана: гугли в сторону 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);
                }


как видим сплошные костыли но работает кроссбраузерно опера мазила ие сафари гугл хром
так что если можеш предложить лучшее решение - фперед
Ответить с цитированием
  #5 (permalink)  
Старый 15.07.2010, 17:44
Новичок на форуме
Отправить личное сообщение для puchu Посмотреть профиль Найти все сообщения от puchu
 
Регистрация: 15.07.2010
Сообщений: 8

и не в коем случае не предлагай мне метод который стоит на таймауте и проверяет фрейм - эта ваще гавно, хоть и кроссбраузерное
Ответить с цитированием
  #6 (permalink)  
Старый 15.07.2010, 18:17
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Сообщение от puchu Посмотреть сообщение
и не в коем случае не предлагай мне метод который стоит на таймауте и проверяет фрейм - эта ваще гавно, хоть и кроссбраузерное
Поэтому Вы сделали свое го*но, некроссбраузерное?
Ответить с цитированием
  #7 (permalink)  
Старый 15.07.2010, 20:37
Новичок на форуме
Отправить личное сообщение для puchu Посмотреть профиль Найти все сообщения от puchu
 
Регистрация: 15.07.2010
Сообщений: 8

тратить лишнее процессорное время на такое глупо
если можно сделать нормальную надежную реализацию без этого

*Поэтому Вы сделали свое го*но, некроссбраузерное?
если ты пришол сюда сказать какие все говно а ты один умный - ты пришол не по адресу
Ответить с цитированием
  #8 (permalink)  
Старый 15.07.2010, 21:45
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

как насчет такого варианта? Или объясни нормально, как эти события работают в разных браузерах
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... ты ждешь, что его назовут как-то по-другому?

Сообщение от puchu
тратить лишнее процессорное время на такое глупо
если можно сделать нормальную надежную реализацию без этого
если можно сделать нормальную надежную реализацию, то лучше обойтись без setTimeout. Но лучше уж setTimeout, чем browser detection. И ты мерял, сколько там этого времени тратится (тем более, что это отправка формы, а не какой-нибудь ajax suggest)?
Ответить с цитированием
  #9 (permalink)  
Старый 16.07.2010, 00:54
Аспирант
Отправить личное сообщение для Panzermaus Посмотреть профиль Найти все сообщения от Panzermaus
 
Регистрация: 14.07.2010
Сообщений: 43

Сообщение от puchu Посмотреть сообщение
все отлично было пока я не вставил в функцию alert
Прям сегодня написано: alert() и события - дело темное.

Оказывается, у И. Кантора тоже об этом есть. Эм-м, видимо нет такой темы, о которой бы у него ни слова не было
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очередь событий Petka jQuery 2 03.03.2010 12:21