Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.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 数据URL的Src似乎不正确_Javascript - Fatal编程技术网

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吗?我就是这么说的,这是一种重试。。。您应该将其修改为适当的解决方案