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属性的例子吗?

解决方法

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

但…

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

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

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

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

BTW,代码中的语法错误:

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


HTML5和CSS3实现3D展示商品信息的代码
利用HTML5中的Canvas绘制笑脸的代码
Html5剪切板功能的实现
如何通过HTML5触摸事件实现移动端简易进度条
Html5移动端获奖无缝滚动动画实现
关于HTML5和CSS3实现机器猫的代码
HTML5使用DOM进行自定义控制
使用HTML5 Canvas绘制阴影效果的方法
使用PHP和HTML5 FormData实现无刷新文件上传
如何解决HTML5 虚拟键盘出现挡住输入框的问题
HTML5中div和section以及article的区别分析
html5和CSS 实现禁止IOS长按复制粘贴功能
html5 touch事件实现触屏页面上下滑动
canvas 模拟实现电子彩票刮刮乐的代码
HTML5 Plus 实现手机APP拍照或相册选择图片上传的功能
Android自定义环形LoadingView效果
HTML5 canvas绘制五角星的方法
html5使用html2canvas实现浏览器截图
使用Canvas处理图片的方法介绍
利用Canvas模仿百度贴吧客户端loading小球的方法