yangsirgo / good-good-study

水平垂直居中,这是一道面试必考题,^_^
0 stars 0 forks source link

关闭浏览器页签的beforeUnload 和 unload方法 #39

Open yangsirgo opened 4 years ago

yangsirgo commented 4 years ago

使用网易云信的会议系统,产生的新需求: 防止用户误操作,需要在关闭页签时提示,确定要离开会议吗?取消,确定,点击取消按钮页面无变化,点击确定按钮,执行关闭聊天室的接口,然后关闭当前页面。

使用beforeUnload 和 unload方法,beforeUnload 会 在unload 方法前执行。 规格讨论中提到了 beforeUnload 的两大用途:

  1. 防止使用者不慎遺失編輯中的資料
  2. 詐騙使用者。(会在离开页面后出现诈骗信息) 所以google 从 Chrome 51 版(2016 年 4 月)起取消 onbeforeunload 对对话框信息的自定义写法,理由是防止自定义信息被用於詐騙用途。 根据规范 beforeUnload 事件内的处理函数中调用下列弹窗相关的方法时,可以忽略不执行 alert,showModalDialog(), window.confirm() window.prompt(),debugger.也就是无法自定义样式弹窗,弹窗只能是默认的,文本也不能自定义处理。 如果需要在关闭页面 时 执行一些销毁代码,需要在unload里面写入。但是问题也有,就是刷新也会执行这段代码。