延迟加载图像

时间:2013-09-29 20:31:16

标签: javascript jquery html

我正试图阻止视线图像立即加载。我已经找到了似乎被接受的内容,包括将图像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 Feed。

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?

1 个答案:

答案 0 :(得分:0)

你可以使用这样的功能,这可能不完美,但我认为这已经足够了:

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">"