我正在开发一个项目,使用画布自动裁剪图片,然后返回其数据URL。它使用来自外部服务器的图像,该服务器具有适当的CORS标头,即使这些图像是跨域的,在它们被裁剪后也可以将它们转换为数据URI。
代码在所有浏览器中都完美运作(且没有安全错误!),唯独在IE 10中出现问题,当调用canvas.toDataURL()时会抛出'SCRIPT5022: SecurityError'。
这是IE的一个bug还是我需要在我的代码中做出不同的调整才能使其在"白痴浏览器"中工作?谢谢。 -Scott
编辑 这里是我用于创建和绘制画布的代码的大部分内容;
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
var img = new Image();
img.src = imageServerURL + '?id=' + imageIdToGet; // imageServerURL points to a different domain but the server has headers allowing requests from my domain
/*
code here that defines the cropping area, in variables like ulX, lrY, etc.
*/
ctx.beginPath();
ctx.moveTo(ulX, ulY);
ctx.lineTo(urX, urY);
ctx.lineTo(lrX, lrY);
ctx.lineTo(llX, llY);
ctx.closePath();
ctx.clip();
ctx.drawImage(img, 0, 0);
var url = canvas.toDataURL(); // This succeeds in all other browsers but throws a SecurityError in IE