在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ Electron如何截獲頁面下載事件?

Electron如何截獲頁面下載事件?

Electron默認的下載事件不支持斷點下載,我想截獲后調用自己的下載函數(shù),下載函數(shù)已經寫好,現(xiàn)在問題主要是要截獲頁面的下載事件(html頁面不是自己寫的),有沒有懂的大神賜教下

回答
編輯回答
筱饞貓

我前段時間正好寫過electron的下載,正常的electron實現(xiàn)下載是怎樣的呢?
先要說下electron的ipc通信,ipcMain,ipcRenderer
electron內主進程和渲染進程是通過ipc通信的
主進程(main.js)定義 監(jiān)控 函數(shù)

ipcMain.on('download', (evt, args) => {
    let url = JSON.parse(args);
    downloadUrl = url.downloadUrl;
    saveUrl = url.saveUrl;
    mainWindow.webContents.downloadURL(downloadUrl);
});

渲染進程(頁面)調用ipcRenderer來觸發(fā)

ipcRenderer.send('download', JSON.stringify({
    downloadUrl: `${ipURL()}${url}`,
    saveUrl: result[0]
}));

這樣就可以觸發(fā)主進程的下載動作,至于下載動作是怎樣的我就不寫了,官方上都有,
如果向阻止electron只要把main.js里的

ipcMain.on('download', (evt, args) => {
    let url = JSON.parse(args);
    downloadUrl = url.downloadUrl;
    saveUrl = url.saveUrl;
    //mainWindow.webContents.downloadURL(downloadUrl);
});

注釋掉就行了

當然每個人的寫法可能不一樣,但是都是通過ipc從渲染進程發(fā)送給主進程的,找到主進程里開始下載的動作,關掉就可以了

2017年10月25日 14:04
編輯回答
怣人

文件下載是瀏覽器的動作,這一部分并不會和js進行交互

2017年12月30日 01:21
編輯回答
風畔

問題解決了,當頁面執(zhí)行下載操作的時候Electron的webContents.downloadURL(url)會被自動調用,session 的 will-download 事件會觸發(fā), 只要監(jiān)聽session 的 will-download 事件,然后調用event.preventDefault()阻止調用系統(tǒng)的默認下載,之后調用自己的下載函數(shù)就可以了,謝謝大家了
mainWindow.webContents.session.on('will-download',(event,item,webContents)=>{

    event.preventDefault();
    //console.log('will-download'+item.getURL());
    //執(zhí)行自己的下載操作
    MyDownLoad(item.getURL());
});
2017年3月29日 21:51