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ā)送給主進程的,找到主進程里開始下載的動作,關掉就可以了
問題解決了,當頁面執(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());
});北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達內教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構,是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學校辦產業(yè)為響應國家深化產教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復興的升級產業(yè)鏈。利用北京大學優(yōu)質教育資源及背
博為峰,中國職業(yè)人才培訓領域的先行者
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經理從事移動互聯(lián)網管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經理職務負責iOS教學及管理工作。
浪潮集團項目經理。精通Java與.NET 技術, 熟練的跨平臺面向對象開發(fā)經驗,技術功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網頁制作和網頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經驗。曾經歷任德國Software AG 技術顧問,美國Dachieve 系統(tǒng)架構師,美國AngelEngineers Inc. 系統(tǒng)架構師。