【发布时间】:2018-02-16 07:16:11
【问题描述】:
如果在使用 Electron JS 时 loadURL 和 location.href 都无法在某些网站上导航,那么您可能会遇到过去 4 小时一直困扰我的相同问题
【问题讨论】:
标签: navigation electron onbeforeunload
如果在使用 Electron JS 时 loadURL 和 location.href 都无法在某些网站上导航,那么您可能会遇到过去 4 小时一直困扰我的相同问题
【问题讨论】:
标签: navigation electron onbeforeunload
许多网站会添加一个 onbeforeunload 事件侦听器,以防止用户离开未保存更改的页面。不幸的是,Electron 不呈现确认对话框,因此如果您尝试在具有此侦听器的网站上导航,而不是显示“您确定”样式的弹出窗口,您将一无所获。
为防止出现此问题,您需要停止使用 onbeforeunload 或根据https://github.com/electron/electron/issues/7977 添加自定义对话框(如果您控制该站点)。或者,如果您不控制正在加载的站点,请使用以下内容来防止站点侦听卸载
// Override addEventListener so we can block any attempt to beforeunload.
let originalAddEventListener = window.addEventListener.bind(window)
Object.defineProperty(window, 'addEventListener', {
configurable: false,
writeable: false,
get () {
return function addEventListener (event, ...args) {
if (event === 'beforeunload') {
console.log("NO")
}
else {
originalAddEventListener(event, ...args)
}
}
}
})
Object.defineProperty(window, 'onbeforeunload', {
configurable: false,
set () {
},
get () {
}
})
【讨论】: