p5.j​​s saveCanvas()失败,出现"网络错误"在谷歌浏览器中,除非控制台已打开

时间:2017-06-19 01:09:28

标签: javascript google-chrome processing processing.js p5.js

我在p5.js中写了一个小草图,通过使用saveCanvas()方法保存画布的快照来完成。

当我打开控制台时,事情就像我预期的那样(我提供的名称文件保存到Downloads文件夹中)。但是,如果我关闭开发者控制台,我会看到"下载,失败 - 网络错误。"

此问题似乎只发生在Chrome中。我已经能够使用Safari和Firefox成功运行草图而没有打开控制台。

我已在代码中删除了对console的任何引用(例如console.log())。

1 个答案:

答案 0 :(得分:3)

这是锚点href的chrome最大长度的已知限制。

通常workaround是请求Blob,然后创建blobURI而不是dataURI,或者将data-URI转换为Blob和blobURI。

但是由于你使用p5.js的方法,他们应该这样做,所以对于一个真正的修复,你必须在他们的跟踪器上post an issue

要获得解决方法,您仍然可以自己访问canvas元素

var canvas = createCanvas(w, h);
var canvasElt = canvas.elt;

调用其toBlob()方法,然后使用类似FileSaver.js的内容来获得相同的结果。