javascript - 如何强制加载未在 HTML5 画布中加载的图像?
问题描述
let head = new Image();
head.src = "img/head.png";
if(!head.complete)
console.log('NOT');
在上面的代码中,我第一次加载页面时没有出现在我的日志中,然后当我刷新页面时,在加载图像时没有记录任何内容。如何在第一页加载时强制加载图像?
我已经提到了很多关于 SO 的答案,但到目前为止没有任何帮助。我使用onload
了,但图像只是没有在第一次加载时加载,因为我使用head.complete
. "head.png?"+getTime(new Date())
如果缓存有问题,我什至在图像末尾添加了一个时间戳。但没有运气!
并且所有其他图像都可以完美加载。
解决方案
我假设您的脚本直接在顶级函数 document.ready() 中运行,或者您的脚本在第一个函数中运行的函数中。那么您可以检查以下之一:
如果满足以下任一条件,则认为图像已完全加载:
src 和 srcset 属性均未指定。srcset 属性不存在,并且 src 属性在指定时是空字符串 ("")。图像资源已完全提取并已排队等待渲染/合成。图像元素先前已确定该图像完全可用并且可以使用。图像“破碎”;也就是说,由于错误或图像加载被禁用,图像无法加载。值得注意的是,由于图像可能是异步接收的,所以在脚本运行时完成的值可能会发生变化。
另外我假设您将 head 变量附加到 or body 元素。如果图像链接正常,您可以在浏览器控制台中检查(如果您跳过链接,它将显示图像)
推荐阅读
- tensorflow - “pip install models”:命令出错,退出状态为 1:python setup.py egg_info 检查日志以获取完整的命令输出
- android - 逐项滚动卡片列表
- python - 训练测试拆分后丢弃值
- highcharts - 在 X 轴下显示信息,例如在 Excel 中使用 Highcharts
- sql - MS ACESS 按多个标准对列进行排名
- c - 在 C 中查找素数
- python - 如何使用列表理解遍历对象属性?
- vhdl - 用于读取十六进制并转换为 std_logic_vector 的 Vhdl 代码
- openshift - 部署“分蘖”超过了进度期限
- node.js - 将 jest 与 mongoose 一起使用时,“ReferenceError: You are trying to `import` a file after Jest environment has been torn down”