【发布时间】:2016-06-23 18:32:08
【问题描述】:
我使用 jQuery 编写了一个脚本,该脚本在调整窗口大小并且可以正常工作时更改 HTML 中 img 标记的 src 属性。但是,使用 Chrome 的开发人员工具,我注意到 每次 调整窗口大小时,都会加载实际图像!换句话说,如果用户反复调整窗口大小,图像将一次又一次地加载。有没有办法避免这种情况,以便最多加载一次图像?
这是我的代码:
$(window).resize(function() {
if ($(window).width() <= 480) {
$(".on-demand-img").attr("src", "http://img1.coastalliving.timeinc.net/sites/default/files/image/2012/06/beaches/0612_best-beaches-kapalua-m.jpg");
} else if ($(window).width() <= 768) {
$(".on-demand-img").attr("src", "https://s-media-cache-ak0.pinimg.com/736x/fa/6f/9a/fa6f9a5f7577a578bb7d63bf458d2905.jpg");
} else {
$(".on-demand-img").attr("src", "https://imageserver.avenso.com/imageserver/bilder/paesaggi-sole-scattered-clouds-0:0:4b04507422128:1b762d.jpg");
}
});
【问题讨论】:
-
也许去抖会是一个很好的用例davidwalsh.name/javascript-debounce-function
-
确定这不仅仅是因为您在开发工具设置中启用了“禁用缓存(在 DevTools 打开时)”...?
-
@CBroe 是的,我刚刚检查并启用了缓存
-
@AlexanderSolonik 去抖动功能只会推迟图像的加载,而不是阻止它
-
使用
srcset或picture,具体取决于您的用例(分辨率切换或艺术指导)。对于不支持的浏览器,有很好的 polyfill 解决方案。
标签: javascript jquery image