lazysizes
Version:
High performance (jankfree) lazy loader for images (including responsive images), iframes and scripts (widgets).
73 lines (57 loc) • 3.07 kB
Markdown
# lazysizes noscript/progressive enhancement extension
The noscript extension is the true ultimate progressive enhancement extension for lazySizes. It allows you to transform any HTML inside a ``noscript`` element as soon as it becomes visible.
## Markup
The ``lazyload`` class has to be added to the parent element of the ``noscript`` element and this element has to also have a ``data-noscript`` attribute. As soon as it is near the viewport the content of the ``noscript`` element will replace the content of the ``.lazyload` element.
```html
<div class="lazyload" data-noscript="">
<noscript>
<p>any kind of content you want to be unveiled</p>
</noscript>
</div>
<!-- or -->
<div class="lazyload" data-noscript="">
<noscript>
<picture>
<!--[if IE 9]><video style="display: none;><![endif]-->
<source
srcset="http://placehold.it/500x600/11e87f/fff"
media="(max-width: 480px)" />
<source
srcset="http://placehold.it/700x300"
media="(max-width: 700px)" />
<source
srcset="http://placehold.it/1400x600/e8117f/fff"
media="(max-width: 1400px)" />
<source
srcset="http://placehold.it/1800x900/117fe8/fff" />
<!--[if IE 9]></video><![endif]-->
<img
src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="
alt="image with artdirection" />
</picture>
<iframe frameborder="0"
allowfullscreen=""
src="//www.youtube.com/embed/ZfV-aYdU4uE">
</iframe>
</noscript>
</div>
```
**Important note**: While you also can transform responsive images with this plugin, neither the ``data-sizes`` nor the ``customMedia`` features do work with the ``noscript`` extension. Also note: Android 2.x is not supported with this plugin.
## Troubleshooting: Escaped HTML entities
Normally the content of a ``noscript`` must be retrieved as text. But in some cases for example, if the ``noscript`` element was created in a XML documented/context, it must be retrieved as HTML. This can't be automatically detected.
In case this happens, you can fix this either by making sure that ``noscript`` elements are always created in a *text/html* context or by overriding the ``getNoscriptContent`` option callback:
```js
window.lazySizesConfig = window.lazySizesConfig || {};
window.lazySizesConfig.getNoscriptContent = function(noScript){
return (noScript.isXML) ? noScript.innerHTML : (noScript.textContent || noScript.innerText);
};
```
## <a name="ie8"></a>Add IE8- support with conditional comments
The noscript extension can also be used in conjunction with conditional comments to add progressive enhancement support for IE8-:
```html
<div class="lazyload" data-noscript="">
<!--[if lte IE 8]><noscript><![endif]-->
<p>any kind of content you want to be unveiled</p>
<!--[if lte IE 8]></noscript><![endif]-->
</div>
```