2017-07-13 66 views
0

Electron有沒有方法可以判斷一個窗口是否成功關閉?如何判斷電子窗口是否無法關閉?

win.once("closed",() => { 
    // send message to the page running in the renderer process that the window was closed 
}); 

win.close(); 

假設我不取消在closebeforeunload處理程序結束後,可以在窗口仍未關閉,或者我可以肯定的是消息總是會被髮送到客戶端頁?

回答

0

已經在文檔看看this屬性:

win.closed

布爾即子窗口被關閉後,設置爲true。

而且this其他有點太:

win.destroy()

強制關閉窗口,卸載和beforeunload 事件將不發射的網頁,和關閉事件也不會將爲此窗口發射 ,但它保證發射的關閉事件將爲 。

有了這一點,你應該有你需要創建一個函數的所有信息是確保你的窗口關閉:

function forceClose(window) { 
 
    
 
    // try close first 
 
    window.close() 
 
    
 
    // force with destroy 
 
    if(!window.closed) { 
 
    window.destroy() 
 
    } 
 
    
 
    //just logging out the event 
 
    window.on('closed', (e) => { 
 
    console.log(e) 
 
    }) 
 
    
 
} 
 

 

 
// in your code, instead of calling win.close() 
 
forceClose(win)

+0

但標誌設置爲true,僅* *閉幕事件發生後,對吧?因此,如果無論出於何種原因,在我們進入if(!window.closed)檢查時,「closed」事件仍然沒有被解僱,我們會遇到問題。如果創建窗口出現問題,我希望有某種事件被解僱。 – pushkin

+0

創建窗口或關閉窗口?也許我誤解了你的問題,「窗戶仍然無法關閉」。你可以在'if'節點放一個日誌,這會讓你知道'win.close()是否有問題(並且你處理它),但是破壞會總是關閉窗口 – kuzyn

+0

有您可以在創建窗口時監聽事件,您只需檢查事件對象即可查看詳細信息:https://electron.atom.io/docs/all/#event-browser-window-created – kuzyn

相關問題