为了账号安全,请及时绑定邮箱和手机立即绑定

Electron如何截获页面下载事件?

Electron如何截获页面下载事件?

呼啦一阵风 2019-05-13 13:06:49
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());
});
                            
查看完整回答
反对 回复 2019-05-13
?
繁华开满天机

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从渲染进程发送给主进程的,找到主进程里开始下载的动作,关掉就可以了
                            
查看完整回答
反对 回复 2019-05-13
  • 2 回答
  • 0 关注
  • 526 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信