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

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

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

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

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

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

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

3 ответа

Решение

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

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

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

Поэтому не стоит полагаться на то, что альтернативный текст отображается при ошибке.

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

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

Кажется, что вы путаете alt атрибут и title приписывать.

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

Некоторые сломанные UA кашель IEкашель alt как title на изображениях; корень большого замешательства.

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

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

Другие вопросы по тегам