избавиться от красного X в IE для несуществующих изображений - PullRequest
4 голосов
/ 07 апреля 2010

У меня есть третий веб-сайт (Confluence), который ссылается на изображения, защищенные логином.

Если текущий пользователь вошел в систему, изображение отображается, если нет, то URL-адрес изображения перенаправит на форму входа в систему.

Пример

<img src="secure/myimage.gif" />

Когда вы вводите этот URL в браузере, происходит перенаправление на страницу входа.

Проблема сейчас: IE показывает страшную красную иконку X для изображения, хотя там не должно быть ничего (как в Firefox). Кто-нибудь знает, как это обойти?

Ответы [ 3 ]

8 голосов
/ 07 апреля 2010

Используйте событие onError, чтобы установить изображение по умолчанию.

Это будет работать в любом браузере.

Пустое изображение, отображаемое в FF, является причудой FF, поскольку полученный файл не является изображением, которое должно сообщать об ошибке.

2 голосов
/ 08 апреля 2010

Я нашел хорошее решение, используя jQuery: Этот скрипт заменяет все «битые» изображения на определенный заполнитель. Прекрасно работает в IE / FF / Chrome

<script type="text/javascript" lang="javascript">

jQuery(window).bind('load', function() {
jQuery('img').each(function() {
    if((typeof this.naturalWidth != "undefined" &&
        this.naturalWidth == 0 ) 
        || this.readyState == 'uninitialized' ) {
        jQuery(this).attr('src', 'placeholder.gif');
    }
}); 
})

</script>
2 голосов
/ 07 апреля 2010

Вот несколько решений:

  1. перенаправить страницу с защищенными изображениями в форму входа
  2. сервис изображений возвращает сервис по умолчанию, если проверка безопасности не удалась.
  3. отправьте взломанный IE вашему клиенту с красным X вместо пустого, как Firefox, о котором вы упоминали.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...