почему атрибут alt ‹img› не всегда правильно отображается

Итак, у меня есть этот php-скрипт, который выводит html-таблицу с данными о некоторых файлах (например, имя файла, размер файла и т. д.)

У меня есть эта функция javascript, которая отображает изображение при наведении курсора на тег, принадлежащий классу «предварительный просмотр». Например, если имя файла: somePic.jpg, при наведении указателя мыши на файл somePic.jpg рядом с мышью появится изображение.

Сейчас не все эти файлы картинки, некоторые .мп3, так что естественно при наведении на них джаваскрипт не может отобразить картинку. Чтобы справиться с этим случаем, я добавил в тег (сгенерированный функцией javascript) атрибут alt: alt='Предварительный просмотр недоступен для этого типа контента.'

И вот моя проблема, иногда работает, а иногда нет! Иногда начинаешь наводить на ссылки .mp3, и отображается атрибут alt, затем наводишь на картинку, отображается картинка, потом снова наводишь на .mp3, и уже не отображается alt, а картинка "битое изображение" (маленький красный крест) отображается вместо...

Конечно, я мог бы проанализировать имена файлов и определить, когда это mp3, а затем разобраться с этим случаем, но я думал, что атрибут alt должен был достичь этого... но он глючит...

Любая идея? Кто-нибудь уже сталкивался с этой проблемой?


person Pierre    schedule 28.05.2010    source источник
comment
Можете ли вы показать код? Вывод HTML, который воспроизводит проблему?   -  person Konerak    schedule 28.05.2010


Ответы (3)


Как правило, alt используется, когда изображения отключены, а не в качестве защиты от ошибок. Хотя IMO желательно, чтобы замещающий текст отображался в условиях ошибки, стандарт не говорит, что он должен:

Для пользовательских агентов, которые не могут отображать изображения, формы или апплеты, этот атрибут указывает альтернативный текст.

и действительно, поведение браузера различается. WebKit (Safari, Chrome) будет отображать только иконку сломанного изображения, но не альтернативный текст; IE пытается отобразить альтернативный текст внутри поля со значком изображения (который часто отображается плохо).

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

Конечно, я мог бы разобрать имена файлов и определить, когда это mp3.

Да, я думаю, вам придется. Не то, чтобы это возможно в общем случае, поскольку расширение имени файла/URL может не иметь ничего общего с фактическим типом файла. Однако, если вы сами контролируете все URL-адреса, вы можете гарантировать, что все файлы MP3 будут называться ...mp3.

person bobince    schedule 28.05.2010

Похоже, вы путаете атрибут alt и атрибут title.

Атрибут alt — это атрибут, специфичный для img, для назначения альтернативного содержимого для отображения в случае, когда изображение невозможно. title — это общий атрибут, используемый для предоставления всплывающей подсказки при наведении курсора на элемент.

Некоторые неработающие пользовательские агенты кашляютIEкашляют обрабатывают alt как title на изображениях; корень многих заблуждений.

person Williham Totland    schedule 28.05.2010
comment
Атрибут alt — это специфичный для img атрибут для назначения альтернативного содержимого, которое будет отображаться в случае, если изображение не может быть отображено. Так что каждый раз, когда это не картинка, нужно отрисовывать альт, да? ^_^ это мой случай, и на самом деле это иногда работает, но не всегда... Я думаю, это просто глючное поведение... - person Pierre; 31.05.2010

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

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

person Ólafur Waage    schedule 28.05.2010