Javascript 数据URL的Src似乎不正确
我在网上找到了这段代码,它似乎运行得很好 但我不知道最后一部分是为了什么Javascript 数据URL的Src似乎不正确,javascript,Javascript,我在网上找到了这段代码,它似乎运行得很好 但我不知道最后一部分是为了什么 function toDataUrl(src, callback, outputFormat) { var img = new Image(); img.crossOrigin = 'Anonymous'; img.onload = function() { var canvas = document.createElement('CANVAS'); var ctx = canvas.getCo
function toDataUrl(src, callback, outputFormat) {
var img = new Image();
img.crossOrigin = 'Anonymous';
img.onload = function() {
var canvas = document.createElement('CANVAS');
var ctx = canvas.getContext('2d');
var dataURL;
canvas.height = this.height;
canvas.width = this.width;
ctx.drawImage(this, 0, 0);
dataURL = canvas.toDataURL(outputFormat);
callback(dataURL);
};
img.src = src;
if (img.complete || img.complete === undefined) {
img.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
img.src = src;
}
}
img已经分配了传递给它的src。然后,如果是complete或complete undefined(不确定这是为了什么),img.src会为其分配一些其他的dataURL。我假设这会覆盖原始分配,然后传入的src会再次分配给它
它确实有效,但我很好奇它在做什么
谢谢
Tom最后一部分是在img中添加1px Gif,以防img未完全填充。再次分配src是一种重试不确定,但我猜if部分用于触发img.onload事件,以防它已被触发。如果删除最后三行,它是否有效?如果使用“if block”更新src,会显示什么?是的,如果我注释掉最后四行,它有效。如果我只注释掉最后一行“img.srs=src;”,它不会返回任何内容。所以这些行可能是必要的。但是src的赋值不会再次覆盖1px Gif吗?我就是这么说的,这是一种重试。。。您应该将其修改为适当的解决方案