Перекрашивание CSS в IE9. - PullRequest
1 голос
/ 11 мая 2011

У нас есть анимированный GIF, который мы используем, чтобы оживить кнопку отправки после того, как пользователь отправил форму.Если вся проверка проходит на форме, мы назначаем фон с помощью метода jQuery css(), устанавливая фоновое изображение, расположение и цвет все в одном.

IE9 не показывает фоновое изображение при отправке, хотя продолжаетбыть замеченным в других браузерах.

Этот метод хорошо работал в предыдущих браузерах IE, но, похоже, сломался в IE9, в том числе в более старых «режимах браузера».Я не уверен, является ли это ошибкой в ​​IE9, но она определенно изменила поведение, и я не могу доверять режимам IE7 / 8, чтобы вести себя так, как ожидается.

Кажется, что, возможно, IE решает несделать больше перекраски после того, как пользователь отправил форму.Если это так, я не уверен, что у меня есть способ обойти это, но я хотел бы думать, что это не так.Мы столкнулись с предыдущей проблемой с этой техникой в ​​Firefox, где мы обнаружили, что Firefox останавливает все запросы http, кроме самого запроса формы, что означает, что если фоновое изображение не было в кеше, оно не будет работать.Из-за этого мы взяли предварительную загрузку счетчика на объект Image в памяти.

Интересно, что если я вручную вызываю метод, который обновляет CSS на кнопке из консоли инструментов IE dev, он работает просто отлично.Только когда у нас есть фактическое представление, оно становится упрямым и не может рисовать в счетчике.Также интересно, что удаляет текст из кнопки отправки, что является второй частью эффекта.

У кого-нибудь есть какие-либо идеи о том, что вызывает это / как его предотвратить?

Вот уменьшенная версия кода 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;
});

1 Ответ

0 голосов
/ 25 августа 2011

У меня была похожая проблема с ExtJS, и я обнаружил, что именно вы обнаружили, что IE9 не загружает новые изображения после отправки формы.

Вот мой обходной путь, который не требует предварительной загрузки, хотя по общему признанию он немного хакерский.

function() {    
    Ext.MessageBox.wait('Searching for tenants eligible for rent increase...', 'Searching');
    setTimeout(function() { document.getElementById('rental_increase_form').submit(); }, 200);
    return false;
}

Обычно я возвращаю false, когда происходит событие отправки формы, я выполняю всю загрузку CSS, а затем вручную отправляю форму через Javascript по истечении времени ожидания 200 миллисекунд.

Надеюсь, это поможет. Вы отправили ошибку в Microsoft?

...