#jquery #ajax #internet-explorer-8 #internet-explorer-7 #gif
#jquery #ajax #internet-explorer-8 #internet-explorer-7 #gif
Вопрос:
Я использую анимированный gif-файл, который будет отображаться при отправке асинхронного запроса в веб-службу через jQuery.ajax()
. GIF изначально скрыт ( display: none
) и отображается через .show()
прямо перед отправкой запроса.
Он работает, как и ожидалось, в Chrome, FF и IE9 и выглядит просто отлично, но в IE8 его анимация время от времени зависает в процессе, а в IE7 просто показывает gif, но вообще не анимируется.
Я просматривал несколько потоков по этой проблеме, но они были довольно устаревшими (как и IE7 и IE8, я знаю. Но, к сожалению, нам все равно приходится полностью поддерживать эти браузеры) и, похоже, консенсус был следующим: невозможно — в IE7 есть только один поток для запуска JS и анимированных GIF-файлов.
Я надеюсь, что прошло достаточно времени, и существует обходной путь для этой проблемы. Я новичок в JS и веб-разработке, поэтому, скорее всего, у меня просто недостаточно опыта, чтобы найти простое решение, которое все остальные уже знают. 🙂
Заранее спасибо, Борис
Комментарии:
1. Нажимаете ли вы
Esc
клавишу на странице, чтобы что-то сделать (например, закрыть диалоговое окно)? Не уверен насчет других браузеров, но IE останавливает анимацию GIF приEsc
нажатии.
Ответ №1:
вы могли бы попытаться выполнить вызов ajax в обратном вызове шоу, чтобы:
$(".gif_element").show("normal", function() {
$.ajax({})
});
конечно, это обходной путь
Комментарии:
1. Похоже, это действительно помогает. Мне немного стыдно, что я не думаю об обратном вызове show. Я пробовал
setTimeout
s во всех возможных местах, но ничего не получалось. Спасибо! Теперь мне «просто» нужно найти решение для зависания, в то время как html вводится через jQuery. 🙂
Ответ №2:
Попробуйте удалить атрибут display: none с помощью jquery.
$("#id or .class").css("display", "block" );
или
$("#id or .class").removeAttr("display");
Со мной произошла та же проблема, и сработал один из вышеперечисленных. 🙂
Комментарии:
1. Похоже, тоже работает. Спасибо! Хотя я думаю, что вы имеете в виду
$("#id or .class").css("display", "");
в своем втором предложении, asdisplay
— это не атрибут html, а свойство css. 🙂2. да, вы правы.. я просто скопировал свою предыдущую строку и забыл отредактировать 😉