电子无法导航

时间:2018-02-16 07:16:12

标签: navigation electron onbeforeunload

如果在使用Electron JS时,loadURL和location.href都无法在某些网站上静默导航,那么您可能会遇到在过去4小时内一直踢我的问题

1 个答案:

答案 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 () {
    }
})