почему атрибут <img>alt не всегда отображается правильно - PullRequest
0 голосов
/ 28 мая 2010

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

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

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

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

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

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

Ответы [ 3 ]

8 голосов
/ 28 мая 2010

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

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

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

4 голосов
/ 28 мая 2010

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

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

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

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

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

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

1 голос
/ 28 мая 2010

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

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

...