У нас есть анимированный gif-спиннер, который мы используем, чтобы оживить кнопку отправки после того, как пользователь отправил форму. Если все проверки формы проходят успешно, мы назначаем фон с помощью метода jQuery css()
, устанавливая фоновое изображение, позиционирование и цвет одновременно.
IE9 не показывает фоновое изображение при отправке, хотя оно продолжает отображаться в других браузерах.
Этот метод отлично работал в предыдущих браузерах IE, но, похоже, не работает в IE9, в том числе в старых «режимах браузера». Я не уверен, что это ошибка в IE9, но она определенно изменила поведение, и я не могу доверять режимам IE7/8 из-за этого.
Кажется, что, возможно, IE решает больше не перерисовывать после того, как пользователь отправил форму. Если это так, я не уверен, что у меня есть способ обойти это, но я хотел бы думать, что это не совсем так. Мы столкнулись с предыдущей проблемой с этой техникой в Firefox, где мы обнаружили, что Firefox останавливает все HTTP-запросы, кроме самого запроса формы, что означает, что если фоновое изображение не было в кеше, оно не будет работать. Из-за этого мы начали предварительно загружать счетчик для объекта изображения в памяти.
Интересно, что если я вручную вызываю метод, который обновляет CSS на кнопке из консоли инструментов разработчика IE, он работает нормально. Только когда у нас есть фактическая отправка, она становится упрямой и не может привлечь счетчик. Также интересно, что он удаляет текст из кнопки отправки, что является второй частью эффекта.
У кого-нибудь есть идеи о том, что вызывает это / как это предотвратить?
Вот урезанная версия кода live()
d, который обрабатывает отправку:
jQuery.fn.disableSubmit = function() {
this.find("input[type=submit]").each(function() {
$(this).css({"background": "url(/asdasdasd.gif) no-repeat 50% 50%"});
});
return this;
};
$("form").live("submit", function() {
var form = $(this);
form.disableSubmit();
return true;
});
<button type=submit><img ...gif></button>
. Будет ли он демонстрировать такое же поведение? - person c-smile   schedule 11.05.2011hide().show(0)
— это круто, но кажется, что он отключает анимацию в анимированном gif-файле, который у нас есть в качестве фонового изображения. Что касаетсяeach()
, на самом деле в каждом из них происходит больше, чем просто вызовcss()
, и это не все цепочка. - person thynctank   schedule 11.05.2011