Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 添加交叉原点=";“匿名”;在加载图像之前,将其添加到所有img标记_Javascript_Html5 Canvas_Cors - Fatal编程技术网

Javascript 添加交叉原点=";“匿名”;在加载图像之前,将其添加到所有img标记

Javascript 添加交叉原点=";“匿名”;在加载图像之前,将其添加到所有img标记,javascript,html5-canvas,cors,Javascript,Html5 Canvas,Cors,我的画布抛出错误有问题,因为它试图加载此处描述的缓存图像: 为了解决这个问题,我想将crossorigin=“anonymous”添加到我网站上的所有图像中,但是在加载图像之前,我如何才能做到这一点,以使它们加载正确的标题,而不会使我的画布崩溃 $('img')。每个(函数(){ var$img=$(本); $img.attr('crossorigin',匿名); } 您所采用的方法应该有效(在修复语法错误后),您必须在下一个微任务检查点之前处理crossOrigin属性的设置,这意味着您必

我的画布抛出错误有问题,因为它试图加载此处描述的缓存图像:

为了解决这个问题,我想将
crossorigin=“anonymous”
添加到我网站上的所有图像中,但是在加载图像之前,我如何才能做到这一点,以使它们加载正确的标题,而不会使我的画布崩溃

$('img')。每个(函数(){
var$img=$(本);
$img.attr('crossorigin',匿名);
}

您所采用的方法应该有效(在修复语法错误后),您必须在下一个微任务检查点之前处理
crossOrigin
属性的设置,这意味着您必须同步执行,而不是在异步脚本或事件处理程序中

但是,浏览器并不总是遵循此规则,在某些情况下,缓存图像的加载可以同步完成。因此,为了避免在这种情况下掉落,您可以简单地将
src
再次设置为相同的值,以强制浏览器使用正确的头加载资源

$('img')。每个(函数(){
var$img=$(本);
$img.attr({
交叉源:“匿名”,
src:this.src
});
});
//测试我们加载了正确的标题
$(窗口).on(“加载”,()=>{
const canvas=document.createElement(“canvas”);
canvas.getContext(“2d”).drawImage($('img')[0],0,0);
console.log('cross-origin enabled',!!canvas.toDataURL());
});


setting
src
是否会重新加载映像,即使缓存的映像具有正确的标头?谢谢!如果已使用跨源属性集请求映像,则将使用缓存的版本