2017-01-23 61 views
0

我正在寫一個電子應用程序,遇到了一些問題,感謝任何人都可以提供幫助。電子webview事件

我加載到一個網頁介面SRC =「有關:空白」與

var urlOptions = { 
    extraHeaders: 'Authorization: Bearer ' + arg.token 
}; 
webview.loadURL(arg.viewToLoad, urlOptions); 
現在

,並加載它,當DOM就緒事件觸發,我打電話

webview.addEventListener('did-finish-load',()=> spiner.hide());

我想在webview完成加載後停止微調,但'did-finish-load'事件觸發兩次 - 這會導致幾秒鐘的空白頁。

有沒有人有線索爲什麼? 我再次查看了文檔,但這不解釋正確,有沒有事件觸發器一次資源完成下載並準備顯示?

回答

0

'did-finish-load'事件被觸發2次:當您加載about:blank和使用loadURL()時。

  • 說服你,試試這個:
    main.js:

    const { BrowserWindow} = require('electron') 
    let win = new BrowserWindow({width: 1450, height: 1200}) 
    win.webContents.on('did-finish-load',() => { 
        console.log('finished to load ') 
        }) 
    win.loadURL(`about:blank`) 
    

然後你會發現,做精加工負荷已觸發!
這就是爲什麼事件在您的代碼中觸發2次。

請注意,這裏的重要部分是webContents EventEmitter,它是BrowserWindows和webviews的一個屬性。
我用一個BrowserWindow保持最小的例子。

0

謝謝您的重播。 你是對的,我應該用「上」,而不是「的addEventListener」 所以這個固定爲我的那個,而不是使用:

webview.addEventListener('did-finish-load',() => spiner.hide()); 

我用:

webview.getWebContents().on('did-finish-load',() => spiner.hide()); 
0

高興它幫助。
請注意,您可以直接使用webview.webContents而不是webview.getWebContents()。
不要忘記將問題標記爲「已回答」