如果在使用Electron JS时,loadURL和location.href都无法在某些网站上静默导航,那么您可能会遇到在过去4小时内一直踢我的问题
答案 0 :(得分:0)
许多网站都会添加一个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 () {
}
})