猿问

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

Electron默认的下载事件不支持断点下载,我想截获后调用自己的下载函数,下载函数已经写好,现在问题主要是要截获页面的下载事件(html页面不是自己写的),有没有懂的大神赐教下

ibeautiful
浏览 2119回答 3
3回答

DIEA

问题解决了,当页面执行下载操作的时候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());});

牧羊人nacy

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从渲染进程发送给主进程的,找到主进程里开始下载的动作,关掉就可以了
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答