我需要重新使用图片元素的渲染图像。是否有直接的方法来使用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。如何直接访问此动态渲染图像?
有没有办法访问此渲染图像而无需自己解析源元素?
答案 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元素和回调函数。