相关文章推荐
急躁的手套  ·  ondragover 事件 | ·  4 月前    · 
深沉的便当  ·  GitHub | DevOps ...·  4 月前    · 
绅士的竹笋  ·  海悅聯名卡·  1 年前    · 
阳刚的烤地瓜  ·  Parsing dates in ...·  1 年前    · 
刚毅的酱牛肉  ·  java bufferedwriter ...·  1 年前    · 

事件使网页能够触发一个确认对话框,询问用户是否真的要离开该页面。如果用户确认,浏览器将导航到新页面,否则导航将会取消。

根据规范,要显示确认对话框,事件处理程序需要在事件上调用 preventDefault()

但是请注意,并非所有浏览器都支持此方法,而有些浏览器需要事件处理程序实现两个遗留方法中的一个作为代替:

  • 将字符串分配给事件的 returnValue 属性
  • 从事件处理程序返回一个字符串。
  • 某些浏览器过去在确认对话框中显示返回的字符串,从而使事件处理程序能够向用户显示自定义消息。但是,此方法已被弃用,并且在大多数浏览器中不再支持。

    为避免意外弹出窗口,除非页面已与之交互,否则浏览器可能不会显示在 beforeunload 事件中创建的提示,甚至根本不会显示它们。

    将事件处理程序/监听器加到 window document beforeunload 事件后,将阻止浏览器使用内存中的页面导航缓存,例如 Firefox 的 Back-Forward 缓存 WebKit 的 Page Cache

    HTML 规范指出在此事件中调用 window.alert() window.confirm() 以及 window.prompt() 方法,可能会失效。更多详细信息,请参见 HTML 规范

    示例

    HTML 规范指出作者应该使用 Event.preventDefault() 而非 Event.returnValue ,然而,不是所有浏览器都支持这么做。

    window.addEventListener('beforeunload', (event) => {
      // Cancel the event as stated by the standard.
      event.preventDefault();
      // Chrome requires returnValue to be set.
      event.returnValue = '';