我正在使用FileSaver.js文件将我的画布保存为图像。下载后我必须关闭窗口。有没有办法实现这一目标?
这是我尝试过的代码,
canvas.toBlob(function (blob) {
saveAs(blob, "RQGantt.png");
window.close();
});
Run Code Online (Sandbox Code Playgroud)
它适用于小尺寸的图像。但是当我有大尺寸的图像时,我的窗口在开始下载之前关闭了。
有没有办法在客户端做到这一点?
这是他们针对https://github.com/eligrey/FileSaver.js/issues/52问题提供的回复。
不幸的是,JS 无法判断文件何时完成保存,因此用户必须关闭它可能为保存内容而创建的新选项卡。
所以,我做了以下解决方法
window.onbeforeunload = function () {
//For IE
if (HTMLCanvasElement.prototype.msToBlob && window["ganttBlob"])
saveAs(ganttBlob, "imageName.png");
}
canvas.toBlob(function (blob) {
window.ganttBlob = blob;
// For Non IE Browser
if (!canvas.msToBlob) {
saveAs(blob, "imageName.png");
setTimeout(function () {
window.close();
}, 500);
}
else //For IE
window.close();
});
Run Code Online (Sandbox Code Playgroud)
所以,现在即使窗口已经关闭,下载提示选项也会出现。