Javascript 未捕获(承诺中)在克隆的iframe#2460中找不到元素
如何修复此错误 我的代码:Javascript 未捕获(承诺中)在克隆的iframe#2460中找不到元素,javascript,reactjs,typescript,html5-canvas,html2canvas,Javascript,Reactjs,Typescript,Html5 Canvas,Html2canvas,如何修复此错误 我的代码: const wrapper=document.createElement(“div”); const myHTMLString=“你好”; wrapper.insertAdjacentHTML(“afterbegin”,myHTMLString); //console.log(“>>”,包装器); html2canvas(包装,{useCORS:true})。然后((画布)=>{ appendChild(画布); log(“canvas>>”,wrapper.appe
const wrapper=document.createElement(“div”);
const myHTMLString=“你好”;
wrapper.insertAdjacentHTML(“afterbegin”,myHTMLString);
//console.log(“>>”,包装器);
html2canvas(包装,{useCORS:true})。然后((画布)=>{
appendChild(画布);
log(“canvas>>”,wrapper.appendChild(canvas));
var base64encodedstring=canvas.toDataURL('image/jpeg',1.0);
日志(“base6”,base64encodedstring);
});
错误:
176e275da87 1ms起始文档克隆未捕获(承诺中)在克隆的iframe中找不到元素 html2canvas说(我用粗体突出显示): 该脚本允许您直接在用户浏览器上拍摄网页或其部分的“截图”。屏幕截图是基于DOM的 [……] 脚本遍历它加载到的页面的DOM。它收集所有元素的信息,然后使用这些信息构建页面的表示。换句话说,它实际上并不获取页面的屏幕截图,而是基于从DOM中读取的属性来构建页面的表示 这意味着传递给
html2canvas
的参数必须是文档中存在的元素。这解释了您得到的(未捕获)错误:
在克隆的iframe中找不到元素
显然,这个工具创建了一个临时的iframe,它在其中克隆文档。然后它将搜索作为参数传递的元素。因为在您的情况下,wrapped
不是文档的一部分,所以此搜索失败
因此,在调用html2canvas
之前,您可以执行以下操作:
document.body.appendChild(wrapper);
然后,如果您不希望它保留在DOM中,请在画布渲染完成后再次删除它。非常感谢您的解释
document.body.appendChild(wrapper);