【发布时间】:2021-01-20 01:14:52
【问题描述】:
我在 Internet Explorer 上运行以下代码,它会在 var canvasDataUrl = canvas.toDataURL(); 行引发 SecurityError
var canvas = document.createElement('canvas');
var canvasContext = canvas.getContext('2d');
var img = new Image;
img.onload = function(){
canvasContext.drawImage(img,0,0);
var canvasDataUrl = canvas.toDataURL(); // error occurs here
console.log(canvasDataUrl);
};
img.src = 'https://via.placeholder.com/300x300';
该错误的原因是什么,我该如何解决?
【问题讨论】:
-
这通常意味着图像不是clean。这不应该影响不同的浏览器。
-
您真的要在这个确切的 URL 上加载图像吗?正如之前的评论所说,这不应该在任何浏览器中工作,如果是这样,那就是一个严重的安全错误。如果您尝试绘制其他图像,它是什么类型的图像?也许是 SVG 图像?
-
我赞成上面的 cmets。我测试了你的代码,它既不能在 IE 也不能在 Chrome 中工作。
SecurityError表示画布的位图不是原点干净的;至少它的一些内容已经或可能已经从加载文档本身的站点以外的站点加载。我猜你的代码 sn-p 中的图像 src 是虚拟的。如果可以的话,你可以提供真实的图片src,以便我们进行测试。另外,下面的答案在IE下也能很好用,你也可以试试。
标签: javascript internet-explorer canvas todataurl