【问题标题】:Electron failing to navigate电子无法导航
【发布时间】:2018-02-16 07:16:11
【问题描述】:

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

【问题讨论】:

    标签: navigation electron onbeforeunload


    【解决方案1】:

    许多网站会添加一个 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 () {
        }
    })
    

    【讨论】:

      猜你喜欢
      • 2020-05-31
      • 2019-07-28
      • 2017-10-05
      • 1970-01-01
      • 2014-06-19
      • 2017-01-08
      • 1970-01-01
      • 1970-01-01
      • 2021-07-24
      相关资源
      最近更新 更多