html5 – img标签的HTML crossorigin属性

前端之家收集整理的这篇文章主要介绍了html5 – img标签的HTML crossorigin属性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图了解如何使用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);
}
</script>

说实话,我无法进行实验,因为我不知道哪个站点允许将其图像用作CORS.

我猜想,如果一个站点允许在画布中使用它的图像,如果CORS请求是匿名完成的,你可以在画布上绘制它,如果不是你不能在画布上绘制它,即使请求是匿名完成的(我是不确定我是不是在这里).因此,上述两个示例都必须匿名请求CORS.

你能说他们两个都一样吗?如果没有,你能解释一下为什么,并给我一个使用带有img标签的crossorigin属性的例子吗?

@H_404_19@解决方法
由于您使用#image元素作为图像的源,因此代码的两个版本大致相同.

但…

img元素中没有crossorigin =“anonymous”的版本可能仍会生成跨域违规.

那是因为图像最初被加载到img元素中而没有将跨源标志设置为匿名.

javascript代码可能会使用img元素中图像的缓存版本,而不是尝试从http://重新加载它…

这意味着缓存的图像数据仍然会将画布污染为包含跨源内容.

BTW,代码中的语法错误

// Not:  img.src = document.getElementById("image").value;

img.src = document.getElementById("image").src;

猜你在找的HTML5相关文章