Анимация jQuery не завершена (slideUp / slideDown) - PullRequest
2 голосов
/ 09 февраля 2010

У меня есть веб-интерфейс к системе с левой навигацией. По навигации я могу развернуть / свернуть некоторые меню. Я использую jQuery slideUp / slideDown, чтобы анимировать их следующим образом:

if (enable)
{
    navbar_slide_down = true;
    $j(l1_folder).slideDown("normal", function() {
        navbar_slide_down = false;

        on_navbar_animation_complete();
    });
}
else
{
    navbar_slide_up = true;
    $j(l1_folder).slideUp("normal", function() {
        navbar_slide_up = false;

        on_navbar_animation_complete();
    });
}

Обе анимации запускаются одновременно для обеспечения эффекта аккордеона. Это работает почти во всех случаях.

Проблема, с которой я сталкиваюсь сейчас, заключается в том, что после выполнения некоторых действий в фрейме контента (не в том же фрейме, что и навигация), функции slideDown и slideUp больше не работают. Анимации начинаются, но прекращаются почти сразу, и обратный вызов никогда не срабатывает. Это приводит к блокировке меню. Я могу воспроизвести эту проблему только в FireFox 3.5.7 (другие версии, кажется, в порядке). Если я включу Firebug, проблема не возникнет.

Я пытался обновить jQuery 1.3.2 до 1.4.1, не повезло.

Есть ли какая-то причина, по которой анимация не будет работать и не будет вызывать обратный вызов? Как я могу отладить это с помощью unminified jQuery?

1 Ответ

0 голосов
/ 09 февраля 2010

Проблема была в зависимости от последовательности (то есть: нажмите на это, а затем на то, и произойдет зависание). Я нашел проблему на первой странице:

addEvent(window, 'unload', end_page);

И изменил его на:

addEvent(window, 'onbeforeunload', end_page);

Я до сих пор не уверен, почему это повлияет на внешний кадр (и приведет к разрыву анимации jQuery), но я думаю, что код в обработчике выгрузки работал на второй странице и где-то конфликтовал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...