我用到了2種方式,
1.和瀏覽器里一樣通過 URL或是llocalstorage 等等
2.我也是剛接觸electron 沒幾天, 就查到了一種方式 通過webContents監聽did-finish-load,然后send().
文檔上是這么講的
Event: 'did-finish-load'
當導航完成時發出事件,onload 事件也完成.
然后在這個監聽里面寫 webContents.send();
webContents.send(channel[, arg1][, arg2][, ...])
channelStringarg(可選)
通過 channel 發送異步消息給渲染進程,你也可發送任意的參數.參數應該在 JSON 內部序列化,並且此后沒有函數或原形鏈被包括了.
渲染進程可以通過使用 ipcRenderer 監聽 channel 來處理消息
function showDetailPage(index) {
try {
let win = new BrowserWindow({
width: 800,
height: 500,
show: false,
maximizable: false,
minimizable: false,
resizable: false,
useContentSize: true,
//parent: currentWindow,
modal: false
});
let dataJson=JSON.stringify(dataSource.data());
// win.webContents.openDevTools();
win.on('closed', function () { win = null })
win.loadURL('file://' + __dirname + '/AnnouncementDetail.html?index='+index)//指定渲染的頁面
win.webContents.on('did-finish-load', function(){
win.webContents.send('dataJsonPort', dataJson);
});
win.show();//打開一個窗口
win.webContents.openDevTools();
// Open in Windows Client.
//bound.openReportDetailPage(JSON.stringify(dataSource.data()), index);
} catch(e) {
console.log(e);
}
}
這里發送了數據 dataJson,在子頁面用
remote,
ipcRenderer
} = require('electron');
const BrowserWindow = require('electron').remote.BrowserWindow;
const currentWindow = remote.getCurrentWindow();
pIndex = getQueryUrlString('index');
ipcRenderer.on('dataJsonPort', function(event, message) { // 監聽父頁面定義的端口
initTable(message, pIndex); 把數據傳給函數 initTable
});
我也剛接觸這個框架, 如果有不對的地方,還請大家多多交流
