Per [1] and [2], when it is fail to download the image data, <img> element is not always treated as a replaced element. It could be treated as a text or empty inline element, which is depended on the values of attributes src and alt, intrinsic dimensions, and so on. In WebKit, HTMLImageElement always creates RenderImage as its renderer, and let RenderImage handle the scenarios in which <img> represents alt text or nothing. This could cause some issues like bugs 245136 and 244386. Or <img> does not display the content proper when alt or src attributes change (See test cases in the attachment). Or the alt text is too long, it is not displayed. Should we consider creating a different renderer for <img> depending on which type of content it represents, and create a shadawRoot to display the alt text if needed? Something similar to the implementation in Chromium [3]. [1] https://www.w3.org/TR/2016/WD-html51-20160412/rendering.html#replaced-elements-images [2] https://www.w3.org/TR/2016/WD-html51-20160412/semantics-embedded-content.html#the-img-element [3] https://codereview.chromium.org/481753002
Created attachment 462727 [details] test-changing-value-of-alt-and-src.html
Created attachment 462729 [details] test-changing-value-of-alt-and-src.html
<rdar://problem/100897933>
(In reply to cathiechen from comment #0) > Per [1] and [2], when it is fail to download the image data, <img> element > is not always treated as a replaced element. It could be treated as a text > or empty inline element, which is depended on the values of attributes src > and alt, intrinsic dimensions, and so on. > In WebKit, HTMLImageElement always creates RenderImage as its renderer, and > let RenderImage handle the scenarios in which <img> represents alt text or > nothing. This could cause some issues like bugs 245136 and 244386. Or <img> > does not display the content proper when alt or src attributes change (See > test cases in the attachment). Or the alt text is too long, it is not > displayed. > Should we consider creating a different renderer for <img> depending on > which type of content it represents, and create a shadawRoot to display the > alt text if needed? > Something similar to the implementation in Chromium [3]. > > [1] > https://www.w3.org/TR/2016/WD-html51-20160412/rendering.html#replaced- > elements-images > [2] > https://www.w3.org/TR/2016/WD-html51-20160412/semantics-embedded-content. > html#the-img-element > [3] https://codereview.chromium.org/481753002 [1] https://html.spec.whatwg.org/multipage/rendering.html#images-3 [2] https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element These two are the latest version:)