は、私の知る限りではapp
から放射されたイベントがありません。
さらにがready
になる前にBrowserWindow
を開くことはできませんので、実際に待つ必要があります。
しかし、メインアプリケーションウィンドウの読み込みが非常に遅い場合は、その前に「読み込みウィンドウ」を開いてメインウィンドウの準備ができたら切り替えてください。
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()
あなたはwindow.open()
によってレンダリングプロセスで開かれBrowserWindow
のために同じことを行いたい場合は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
})
であれば、あなたは
webContents
の
new-window
イベントを使用することができます
ありがとう、それは私が探していた答えです! – ElDon90
ウィンドウが 'window.open'によって作成された場合、またはレンダラープロセスでリンクをクリックすると、読み込みアニメーションを追加する方法はありますか? 'window.open( 'https://www.google.com/')' – cuixiping
@cuixipingはその場合も解決策を追加しました – pergy