Насколько я знаю, нет ни одного события, излучаемый app
перед тем ready
(единственным исключением является will-finish-launching
доступна только на MacOS).
Кроме того, вы не можете открыть ни одного BrowserWindow
, перед тем как app
будет ready
, так что вы действительно должны его подождать.
Однако, если загрузка основного окна приложения очень медленная, вы можете открыть перед ним «окно загрузки» и переключить их, когда ваше главное окно будет готово.
const { app, BrowserWindow } = require('electron')
app.on('ready',() => {
let main = null
let loading = new BrowserWindow({show: false, frame: false})
loading.once('show',() => {
main = new BrowserWindow({show: false})
main.webContents.once('dom-ready',() => {
console.log('main loaded')
main.show()
loading.hide()
loading.close()
})
// long loading html
main.loadURL('http://spacecrafts3d.org')
})
loading.loadURL('loding.html')
loading.show()
})
window.open()
Если вы хотите сделать то же самое для BrowserWindow
открыт в процессе рендера window.open()
, вы можете использовать new-window
событие webContents
если nativeWindowOpen
является true
main = new BrowserWindow({
webPreferences: {
nativeWindowOpen: true
}
})
main.webContents.on('new-window', (event, url) => {
// there are more args not used here
event.preventDefault()
const win = new BrowserWindow({show: false})
win.webContents.once('dom-ready',() => {
win.show()
loading.hide() // don't destroy in this case
})
win.loadURL(url)
loading.show()
event.newGuest = win
})
Спасибо, это ответ, который я искал! – ElDon90
Как добавить анимацию загрузки, если окно создано 'window.open' или нажатие ссылки в процессе визуализации? 'window.open ('https://www.google.com/')' – cuixiping
@cuixiping добавило возможное решение для этого случая тоже – pergy