Javascript 为什么我会犯错误;未捕获安全性错误:未能执行';toDataURL';在';HTMLCanvasElement';:受污染的画布不得出口&引用;

Javascript 为什么我会犯错误;未捕获安全性错误:未能执行';toDataURL';在';HTMLCanvasElement';:受污染的画布不得出口&引用;,javascript,Javascript,我已经看了其他的问题,但仍然没有找到答案 当用户单击“保存项目”按钮时,将启动此功能: function common_save_project() { var image = common_screenshot(); } 这称为common_屏幕截图() 但是,当我单击该按钮时,会出现以下错误: Uncaught SecurityError: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases ma

我已经看了其他的问题,但仍然没有找到答案

当用户单击“保存项目”按钮时,将启动此功能:

function common_save_project()
{
  var image = common_screenshot();
}
这称为common_屏幕截图()

但是,当我单击该按钮时,会出现以下错误:

Uncaught SecurityError: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported. 
编辑:出现以下情况时,似乎发生了错误:

rasterizeHTML.drawHTML(mattes_html).then(function (renderResult) 
{
  ctx.drawImage(renderResult.image, moulding_left, moulding_top);
});

是否有另一种解决方案可用于将html标记转换为图像,然后在画布中使用。toURL

您正在从本地文件系统加载文件,而不是使用本地主机请求


通过本地主机文件服务器运行应用程序,并确保仅通过http://而不是从本地系统加载应用程序中的文件。(即c:/or file://or/usr)

只需使用
交叉源属性

var image= new Image();
image.setAttribute('crossOrigin', 'anonymous');
image.src = url;

我不使用localhost。我使用的是一个实际的域。然后你就遇到了跨域问题。出于安全原因,canvas将不允许从其他域加载资产。我的所有图像都来自同一域。我没有要求其他领域的任何东西。请仔细阅读受污染的画布:我有。。。我把那些东西添加到了我的.htaccess文件中
rasterizeHTML.drawHTML(mattes_html).then(function (renderResult) 
{
  ctx.drawImage(renderResult.image, moulding_left, moulding_top);
});
var image= new Image();
image.setAttribute('crossOrigin', 'anonymous');
image.src = url;