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

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

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

ibeautiful 2019-03-27 22:19:18
Electron默认的下载事件不支持断点下载,我想截获后调用自己的下载函数,下载函数已经写好,现在问题主要是要截获页面的下载事件(html页面不是自己写的),有没有懂的大神赐教下
查看完整描述

3 回答

?
DIEA

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());

});


查看完整回答
反对 回复 2019-04-10
  • 我不是D神
    我不是D神
    大佬 渲染进程不生效啊阻止默认时间,进入监听方法了 但是阻止默认事件不生效,还是会弹出保存框
?
牧羊人nacy

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从渲染进程发送给主进程的,找到主进程里开始下载的动作,关掉就可以了


查看完整回答
反对 回复 2019-04-10
  • 3 回答
  • 0 关注
  • 2113 浏览
慕课专栏
更多

添加回答

举报

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