我有一个打开外部页面的Electron应用程序。 在此页面内,我有一个下载文件的按钮。 在普通浏览器上,当我单击下载按钮时,它将打开一个_blank选项卡并自动开始下载,然后立即关闭该选项卡。 但是,在Electron应用程序上,_blank选项卡会打开一个新窗口并询问下载位置,并且该窗口不会根据需要自动关闭。
如何在Electron上重现“正常”浏览器行为?
下载文件的代码是:
window.open(url, '_blank', '');
谢谢
答案 0 :(得分:2)
如果替换代码以使用虚拟链接元素下载文件怎么办?
var a = document.createElement("a");
a.href = url;
a.download = "filename";
a.click();
是否会导致相同的行为,还是可以接受的解决方法?
编辑:或者甚至更简单;将您的下载按钮替换为链接(您可以将其样式化为按钮):
<a href="your-data-uri" download="filename">
答案 1 :(得分:0)
这是一个老问题,但我最近才遇到同样的情况,并提出了以下解决方案:
mainWindow.webContents.session.on('will-download', (event, item, webContents) => {
item.once('done', (event, state) => {
var wins = BrowserWindow.getAllWindows();
for(var i=0;i<wins.length;i++){
//avoid closing the main window
if(wins[i].id !=1){
wins[i].close();
}
}
});
});