3 回答
TA贡献1820条经验 获得超2个赞
问题解决了,当页面执行下载操作的时候Electron的webContents.downloadURL(url)会被自动调用,session 的 will-download 事件会触发, 只要监听session 的 will-download 事件,然后调用event.preventDefault()阻止调用系统的默认下载,之后调用自己的下载函数就可以了,谢谢大家了
mainWindow.webContents.session.on('will-download',(event,item,webContents)=>{
event.preventDefault();
//console.log('will-download'+item.getURL());
//执行自己的下载操作
MyDownLoad(item.getURL());
});
TA贡献1862条经验 获得超7个赞
electron内主进程和渲染进程是通过ipc通信的
主进程(main.js)定义 监控 函数
ipcMain.on('download', (evt, args) => {
let url = JSON.parse(args);
downloadUrl = url.downloadUrl;
saveUrl = url.saveUrl;
mainWindow.webContents.downloadURL(downloadUrl);
});
渲染进程(页面)调用ipcRenderer来触发
ipcRenderer.send('download', JSON.stringify({
downloadUrl: `${ipURL()}${url}`,
saveUrl: result[0]
}));
这样就可以触发主进程的下载动作,至于下载动作是怎样的我就不写了,官方上都有,
如果向阻止electron只要把main.js里的
ipcMain.on('download', (evt, args) => {
let url = JSON.parse(args);
downloadUrl = url.downloadUrl;
saveUrl = url.saveUrl;
//mainWindow.webContents.downloadURL(downloadUrl);
});
注释掉就行了
当然每个人的写法可能不一样,但是都是通过ipc从渲染进程发送给主进程的,找到主进程里开始下载的动作,关掉就可以了
添加回答
举报