在chrome中选择渲染的图片元素图像

时间:2014-12-17 16:41:15

标签: javascript picturefill

我需要重新使用图片元素的渲染图像。是否有直接的方法来使用javascript访问chrome / opera呈现的图像文件路径,而无需复制picturefill完成的逻辑。

<picture>
  <source media="(min-width: 800px)" srcset="head.jpg, head-2x.jpg 2x">
  <source media="(min-width: 450px)" srcset="head-small.jpg, head-small-2x.jpg 2x">
  <img src="head-fb.jpg" srcset="head-fb-2x.jpg 2x" >
</picture>

使用上面的示例,在宽度为1200像素的视网膜桌面浏览器窗口上,带有图片支持的浏览器将呈现head-2x.jpg。或者,如果我在带有视网膜显示屏的宽度小于450像素的智能手机上使用Chrome浏览器,则会使用head-fb-2x.jpg。如何直接访问此动态渲染图像?

有没有办法访问此渲染图像而无需自己解析源元素?

1 个答案:

答案 0 :(得分:5)

如果候选人已加载,则只会更新currentSrc proprety。函数看起来像这样:

function getCurrentSrc(element, cb){
    var getSrc;
    if(!window.HTMLPictureElement){
        if(window.respimage){
            respimage({elements: [element]});
        } else if(window.picturefill){
            picturefill({elements: [element]});
        }
        cb(element.src);
        return;
    }

    getSrc = function(){
        element.removeEventListener('load', getSrc);
        element.removeEventListener('error', getSrc);
        cb(element.currentSrc);
    };

    element.addEventListener('load', getSrc);
    element.addEventListener('error', getSrc);
    if(element.complete){
        getSrc();
    }
}

注意:您必须传递img DOM元素和回调函数。