- From: Odin Hørthe Omdal <odinho@opera.com>
- Date: Wed, 16 May 2012 10:12:14 +0200
- To: whatwg@lists.whatwg.org
Thank you for the well written email. On Wed, 16 May 2012 09:13:01 +0200, Tab Atkins Jr. <jackalmage@gmail.com> wrote: > 3. "@srcset doesn't have good fallback behavior". Yup, it does. The > simplest way is to just do the simplest thing: provide both a @src and > a @srcset, and that's it. This has good behavior in legacy UAs, and > in new ones. The only downside of this is that if you're polyfilling > the feature in legacy UAs, you get two requests (first the @src, then > whatever the JS changes it to). > > If this is problematic, there's a more verbose but still simple way to > handle this (afaik, first suggested by Odin): > > <img src=data: srcset="foo.jpg 1x, foo2.jpg 2x" > style="display:none;"><noscript><img src="foo.jpg"></noscript> It was not first suggested by me, I shopped around in the RespImg CG and on different blogs and comments and articles and picked that up somewhere along the path. I think Scott Jehl's "Some early thoughts on img@srcset in the real world" might be the first place I saw it: <https://gist.github.com/2701939> Although he said something to the effect that "plausible, but may have some issues." Hence my proof of concept *demo* of a srcset polyfill that optimizes for few requests: <http://odin.s0.no/web/srcset/polyfill.htm> To show that it can work. The example I'm using is: <img srcset="small.png 500w, big.png 1000w" style="display:none"> <noscript><img src="small.png" alt="Alt here"></noscript> It'll work without javascript, only showing one alt text. With javascript on, it'll copy the alt text to the real <img> and take away the display:none (which is only there to hinder IE showing a broken image icon when you have no Javascript). > In modern UAs, JS just has to remove the @style. In legacy UAs, JS > removes the @style and sets the @src appropriately (the data: url > ensures that there's not an extra request before JS activates). If JS > isn't turned on, the first image just never displays, but the second > one does. This is more complicated and a bit more fragile than the > previous solution, but it only ever sends a single request. Yes. I have a live test for something like that. It works in all devices and browsers I've got access to. Which is not really very much, but should cater for quite a large part of the internet. (:P) It's at the same page ( http://odin.s0.no/web/srcset/polyfill.htm ). -- Odin Hørthe Omdal (Velmont/odinho) · Core, Opera Software, http://opera.com
Received on Wednesday, 16 May 2012 08:12:58 UTC