图片不更新大概率是资源加载失败或浏览器缓存干扰,需用network面板确认请求状态;路径错误、相对路径解析异常、未监听onload/onerror、blob url未正确使用或未清理等均会导致显示异常。

图片 src 改了但页面没更新,是缓存还是路径问题?
HTML5 本身不负责“动态换图”的逻辑,真正起作用的是 JavaScript 操作 <img alt="html5如何添加动态图片不显示不出来" > 元素的 src 属性。常见现象是代码执行了、src 确实变了,但图片还是旧的或空白——大概率不是 HTML5 的锅,而是资源加载失败或浏览器缓存干扰。
- 先用浏览器开发者工具(Network 面板)确认新
src对应的请求是否发出、状态码是不是200;404 或 403 就说明路径错了或服务没配好 - 如果路径正确但图片一闪而过又变空白,检查新
src是否为相对路径且当前页面 URL 影响了解析(比如从/page/a/跳到/page/b/后,./img.png就指向错目录) - 加个时间戳参数能绕过强缓存:
img.src = 'photo.jpg?' + Date.now();,但别滥用,只在调试或内容真会频繁覆盖时用
用 img.src = 'xxx' 切换后图片不显示,可能漏了 onload/error 监听
设置 src 是异步加载,JS 不会等图片下载完才往下走。如果你紧接着操作图片尺寸、插入 DOM 或读取 naturalWidth,很可能拿到的是 0 或 undefined。
- 必须监听
img.onload才能确保图片加载完成:const img = document.querySelector('img');<br>img.onload = () => { console.log('宽:', img.naturalWidth); };<br>img.onerror = () => { console.error('图片加载失败'); };<br>img.src = 'new.jpg'; - 不要在
onload外直接访问img.width或img.height,它们初始值是 0,且不会自动同步自然尺寸 - 如果图片来自用户上传(
FileReader),reader.result是 data URL,也要走onload,不能设完就认为“已就绪”
动态创建 <img alt="html5如何添加动态图片不显示不出来" > 元素却始终空白,检查是否漏加 src 或未挂载
用 document.createElement('img') 创建后,不设 src 或没插入 DOM,它就只是内存里的一个对象,不会触发任何加载行为。
传媒企业网站系统使用热腾CMS(RTCMS),根据网站板块定制的栏目,如果修改栏目,需要修改模板相应的标签。站点内容均可在后台网站基本设置中添加。全站可生成HTML,安装默认动态浏览。并可以独立设置SEO标题、关键字、描述信息。源码包中带有少量测试数据,安装时可选择演示安装或全新安装。如果全新安装,后台内容充实后,首页才能完全显示出来。(全新安装后可以删除演示数据用到的图片,目录在https://
- 顺序不能错:先设
src,再绑定onload/onerror,最后appendChild(反过来也可能导致事件丢失) - 如果插入的是隐藏容器(
display: none或visibility: hidden),部分浏览器会延迟加载或跳过解码,建议先设src并监听,等加载完成再显示 - 避免重复设置
src:同一张图短时间内多次赋值,可能触发多个并发请求,还容易让onload和onerror对不上号
用 fetch + Blob 加载图片但 createObjectURL 显示不了
这是现代方案里最常踩的坑:Blob URL 看似生成了,但图片仍不显示,往往因为生命周期管理出错。
立即学习“前端免费学习笔记(深入)”;
-
createObjectURL返回的 URL 必须赋给img.src,不能当普通字符串打印或 log 后就以为“成了” - 一旦
img被移除或重用,记得调用URL.revokeObjectURL(img.src)清理,否则内存泄漏,且某些浏览器下次revoke后旧 URL 会立即失效 - 注意 Blob 类型是否匹配:服务器返回的 Content-Type 是
image/jpeg,但你用new Blob([data], {type: 'image/png'})强制指定,可能导致解码失败(尤其 Safari)
src 设了就以为万事大吉,其实那只是加载的起点。









