【发布时间】:2014-11-11 22:19:46
【问题描述】:
我正在尝试了解如何为 img 标签使用 crossorigin 属性。我找不到一个很好的例子(我发现的关于启用 CORS 的图像是用 JavaScript 代码解释的,因此我看不到带有 img 标签的 crossorigin 属性。
我有一个猜测,如果我理解错误,请纠正我的错误。
首先可以编写下面的代码段来将图像绘制到画布上:
<canvas id="canvas" width=400 height=400></canvas>
<br><br>
<img id="image" src="http://...." alt="" width="400" height="400">
<script>
function draw() {
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");
var img = new Image();
img.crossOrigin = "Anonymous";
img.src = document.getElementById("image").value;
context.drawImage(img, 40, 40);
}
</script>
下面的代码是否等同于上面的代码?它不包含“img.crossOrigin”,但在 img 标签中有 crossorigin 属性。
<canvas id="canvas" width=400 height=400></canvas>
<br><br>
<img id="image" crossorigin="anonymous"src="http://...." alt="" width="400" height="400">
<script>
function draw() {
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");
var img = new Image();
img.src = document.getElementById("image").value;
context.drawImage(img, 40, 40);
}
</script>
说实话,我无法进行实验,因为我不知道哪个网站允许将其图像用作 CORS。
我的猜测是,如果一个站点允许在 CORS 请求由匿名完成的情况下在画布中使用其图像,您可以在画布中绘制它,如果不是,即使请求是由匿名完成的,您也无法在画布中绘制它(我不确定我是否在这里)。因此,上述两个示例都必须匿名请求 CORS。
你能说如果他们两个工作相同吗?如果不是,请您解释一下原因并举个例子,使用带有 img 标签的 crossorigin 属性?
【问题讨论】: