javascript - 延迟加载图像

标签 javascript jquery html

我试图阻止立即加载 View 之外的图像。我发现似乎已被接受的做法是将图像 src 放入另一个属性中,然后在需要加载图像时将其移至 src 属性中。

我正在 JavaScript 中插入一些图像

'<img src="img/grey.png" data-original="'+image.src+'" />'

但是,在 Chrome DevTools 中,我可以看到正在加载的图像(在我实现加载它们的代码之前)。

Chrome DevTools Resources Tab Chrome DevTools Network Tab Code

为什么会这样以及如何避免它们被完全加载?

我在禁用缓存的情况下运行。

更多详细信息:

这些图像来自 Google Feeds API 加载的 RSS 源。

feedpointer.load( function (result) {
    if ( !result.error ) {
        $.each( result.feed.entries, function (e, val) {
            tempContent = $( '<div>' + val.content + '</div>' );
            image = tempContent.find( 'img' );
            $('.col_'+id).html('<img src="img/grey.png" data-original="'+image.src+'" />');
        });
    }
}

这就是要点。我可以使用 DevTools 看到该图像绝对不在页面上的其他位置。我认为 Feed API 不会加载它们,因为它们包含在文本中。

我相信tempContent = $( '<div>' + val.content + '</div>' );可能是导致图像加载的违规代码。是否有其他方法可以将字符串作为 DOM 进行遍历?

最佳答案

你可以使用这样的函数,它可能并不完美,但我认为它已经足够好了:

function hideImgSrc( html ){
  return html.replace(/<img[^>]*?>/gi, function( match ){
    return match.replace(/\bsrc(\s*=\s*['"])/gi, function( match, after ){
      return 'data-original' + after;
    });
  });
}

hideImgSrc('<img src = "hello">') --> "<img data-original = "hello">"

关于javascript - 延迟加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19082952/

相关文章:

javascript - 原型(prototype):将此可见性检查脚本隐藏为原型(prototype)语法?

javascript - 优化 jquery 代码,通过 $.post 发送多个数组和简单变量

javascript - 如何通过 Django Channels 实现视频通话?

html - 标题中的链接不起作用

javascript - 4.0.0 BETA 中的 Bootstrap 下拉菜单

javascript - 服务器数据请求后无法更新旋钮的颜色

javascript - 如何在javascript中生成螺旋矩阵?

javascript - 如何使用 javascript/jQuery 检测 <div> 大小的调整

javascript - 获取选择框的名称属性

Javascript 最佳实践 - 使用服务器端值