2015-11-26 5 views
6

Что должен делать браузер, когда img не может быть отображен?Что должно произойти, когда img не может быть отображен?

Официальные источники намеренно неясно об этом. Говорят, что используется текст alt, но они не говорят , как!
Так что, если я не искал достаточно хорошо (и я сделал много Googling. Я даже Binged!) Этой информации нет. И браузеры сильно отличаются друг от друга тем, что они делают.

Если изображение не может быть загружено, потому что не существует,

  • Mozilla отображает альтернативный текст инлайн как часть текущего текста
  • IE отображает альтернативный текст как встроенный блок , которому предшествует значок «сломанного изображения», а другой шрифт
  • В Chrome также отображается встроенный блок и значок «сломанное изображение», и он помещает вокруг него границу. Тем не менее он не меняет шрифт.

<p>This is my new car. 
 
    <img src="images/mynewcar.jpg" alt="It's a red car, with four wheels."/> 
 
    And that's it.</p>

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

  • Хром теперь ничего не отображает, даже текст в стиле.
  • IE по-прежнему отображает текст в меньшем шрифте, но теперь без значка «сломанного изображения» спереди.
  • Mozilla по-прежнему отображает текст в строке текста.

Так что мой вопрос в том, какой из этих браузеров поступает правильно?

И этим я не имею в виду, «как вы думаете, лучший подход»? Я действительно имею в виду, каковы официальные правила, регулирующие это поведение? Есть ли страницы W3C (или даже страницы WHATWG), которые мне удалось пропустить, или где я неправильно истолковал правила?

ответ

3

Похоже, что вокруг этого нет жестких правил. Спецификация HTML описывает только то, как браузер может ожидать, чтобы вести себя, но не накладывает никаких нормативных требований на браузеры, чтобы следовать указанному поведению к письму. Спецификация CSS даже не затрагивает ее.

Section 10.4.2 of W3C HTML5 описывает, как img элементы отображаются в соответствии с набором правил, которые относятся к тому, что элементы imgпредставляют.

Section 4.7.1, а пути вниз, описывает, что такое img элемента представляет собой в зависимости от его src и alt атрибутов:

Что представляет собой img элемента зависит от атрибута src и атрибута alt.

[...]

Если атрибут src установлен и атрибут alt устанавливается на значение, которое не является пустым

Изображение является ключевой частью контента ; атрибут alt дает текстовый эквивалент или замену изображения.

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

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

Таким образом, если изображение недоступно, элемент img представляет его текст alt (поскольку изображение не должно быть представлено!).

Итак, возвращаясь назад в раздел 10.4.2, следующее правило:

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

Похоже, что Firefox следует за это ожидание (примечание: не требование) наиболее близко, хотя ли заменить или не заменить окно, которое генерируется, я не уверен. Аналогично для других браузеров - встроенный блок может быть заменен или не заменен. Обратите внимание, что HTML говорит «фразировочный элемент», а не «встроенный элемент» или «элемент встроенного блока», снова добавляя к неопределенности всего этого.

Что Chrome делает, когда изображения отключены с помощью пользовательских предпочтений, это не то, что я бы назвал «[предоставление] пользователю уведомления о том, что изображение присутствует, но было опущено из рендеринга», но опять же, это также не требование. Тем не менее, я не понимаю, почему Chrome считает, что это хорошая идея. Для чего снова был текст?

0

От MDN HTML элемента <img> IMG

Браузеры не всегда отображать изображение, на который ссылается элемент. Это относится к неграфическим браузерам (в том числе к тем, которые используются людьми с нарушениями зрения), если пользователь не хочет отображать изображений, или если браузер не может отобразить изображение, так как он недействителен или неподдерживается тип. В этих случаях браузер может заменить изображение текстом, указанным в атрибуте alt этого элемента.

поведение си по умолчанию отображает содержимое атрибута альта

см this doc реф MDN документа для исх Вы также можете обратиться Тхо this W3C ref

И это http://www.w3.org/TR/2015/NOTE-UNDERSTANDING-WCAG20-20150226/understanding-techniques.html понимания методик для критериев WCAG успеха

+0

Да, поэтому MDN также говорит, что текст может использоваться, но не тот, как он должен отображаться. Гектометр –

+0

> Not Can, но May ... будет использоваться .. я добавил некоторые ссылки на w3c тоже .. – scaisEdge

+0

Этот параграф, как представляется, относится к неграфическим браузерам. – BoltClock

Смежные вопросы