
html2canvas 在本地或 codepen 中正常,但在 shopify 等生产环境返回空白画布,通常源于目标 dom 元素未就绪、宽高读取失败、跨域资源阻塞或 svg 渲染限制等问题。
html2canvas 在本地或 codepen 中正常,但在 shopify 等生产环境返回空白画布,通常源于目标 dom 元素未就绪、宽高读取失败、跨域资源阻塞或 svg 渲染限制等问题。
当你遇到 html2canvas 在 CodePen 中完美运行,却在 Shopify 页面中输出空白画布(甚至控制台报错 Cannot read properties of null (reading 'width')),这往往不是库本身的问题,而是执行时机与 DOM 状态不匹配导致的根本性失效。
? 根本原因分析
从你提供的代码和错误信息可定位两个关键问题:
-
#screenshot 元素不存在或尚未挂载
控制台报错 Uncaught TypeError: Cannot read properties of null (reading 'width') 明确表明:
let div = document.querySelector('#screenshot');
let width = div.width; // ❌ div 为 null → 报错
这说明脚本执行时,#screenshot 尚未被渲染到页面中——在 Shopify 主题中,商品页媒体区域(尤其是含 modal-opener、noscript 回退、动态加载逻辑的组件)常通过 JavaScript 异步插入或延迟初始化,若 html2canvas 脚本在 DOM 就绪前执行,必然失败。
-
div.width / div.height 属性误用
元素
没有原生 width/height 属性(仅
![]()
、
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!