首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >异步加载镜像

异步加载镜像
EN

Stack Overflow用户
提问于 2013-04-14 21:47:26
回答 10查看 99.5K关注 0票数 42

如果我有一个如下所示的图像标签:

代码语言:javascript
复制
<img src="myimage.jpg" />

如果我加上"async“:

代码语言:javascript
复制
<img async src="myimage.jpg" />

镜像是否会异步加载?

EN

回答 10

Stack Overflow用户

发布于 2016-05-24 19:15:47

异步加载(惰性加载)内容的方法是不设置“src”属性,然后执行一个脚本,该脚本在DOM-ready启动后加载图像。

代码语言:javascript
复制
 <img data-lazysrc='http://www.amazingjokes.com/images/20140902-amazingjokes-title.png'/>

使用jQuery (或者也可以使用普通的JavaScript )使用下面的代码(按照建议的):

代码语言:javascript
复制
<script>  
function ReLoadImages(){
    $('img[data-lazysrc]').each( function(){
        //* set the img src from data-src
        $( this ).attr( 'src', $( this ).attr( 'data-lazysrc' ) );
        }
    );
}

document.addEventListener('readystatechange', event => {
    if (event.target.readyState === "interactive") {  //or at "complete" if you want it to execute in the most last state of window.
        ReLoadImages();
    }
});
</script>
票数 47
EN

Stack Overflow用户

发布于 2013-04-14 22:56:47

代码语言:javascript
复制
var img = new Image(),
    url = "myimg.jpg",
    container = document.getElementById("holder-div");

img.onload = function () { container.appendChild(img); };
img.src = url;

这将在您在脚本中请求图像时立即开始加载图像,并且当图像加载完成时,它将获取图像并将其添加到其中。

有很多其他的方法可以做到这一点。

这只是一个简单的异步加载单个图像的示例。

但其中的寓意是:

要使异步加载正常工作,可以将其加载到JavaScript中并使用onload,或者在页面上包含图像标记,而不使用src属性(在HTML中指定widthheight ),然后在JS中返回并设置图像URL。

票数 32
EN

Stack Overflow用户

发布于 2019-09-16 21:19:47

现代的方法是使用图像和iframe的loading属性。

属性:loading=lazy

这将推迟内容的加载,直到元素到达与视区的计算距离(这只是意味着,用户很可能会将其滚动到视图中)。

代码语言:javascript
复制
<img src="defer.png" loading="lazy" alt="An Awesome Image" width="500" height="400">

将该属性设置为lazy将调用新的行为。

这已经在v76之后的Chromium中出现了,但在通过通常的规范shennanigans之前,可能不会影响非Chromium浏览器。

如果您打算使用脚本延迟加载,则值得使用lazy属性编写图像并对行为进行多填充,而不是使用类名等。这样,您可以在本机版本可用时接管它。

强制紧急加载

自动延迟加载可能会成为轻量级浏览的一个功能,在这种情况下,您可能想要执行相反的操作,强制加载图像。您可以使用值为eager的相同loading属性来请求浏览器获取图像,即使浏览器可能选择不获取图像。

代码语言:javascript
复制
<img src="defer.png" loading="eager" alt="An Awesome Image" width="500" height="400">

进一步阅读

View the pull request for the WHATWG spec

Fallback JavaScript with notes about perhaps not using fallbacks

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15999760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档