Electron默认的下载事件不支持断点下载,我想截获后调用自己的下载函数,下载函数已经写好,现在问题主要是要截获页面的下载事件(html页面不是自己写的),有没有懂的大神赐教下
2 回答
守着一只汪
TA贡献1872条经验 获得超3个赞
问题解决了,当页面执行下载操作的时候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贡献1816条经验 获得超4个赞
我前段时间正好写过electron的下载,正常的electron实现下载是怎样的呢?先要说下electron的ipc通信,ipcMain,ipcRendererelectron内主进程和渲染进程是通过ipc通信的主进程(main.js)定义监控函数ipcMain.on('download',(evt,args)=>{leturl=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)=>{leturl=JSON.parse(args);downloadUrl=url.downloadUrl;saveUrl=url.saveUrl;//mainWindow.webContents.downloadURL(downloadUrl);});注释掉就行了当然每个人的写法可能不一样,但是都是通过ipc从渲染进程发送给主进程的,找到主进程里开始下载的动作,关掉就可以了
添加回答
举报
0/150
提交
取消