首页 > 解决方案 > 无法在 Laravel 页面的谷歌浏览器中检测到选项卡关闭事件

问题描述

在我的 Laravel 项目中,当浏览器关闭按钮单击事件或浏览器的选项卡按钮关闭事件时,我需要发出警告消息。

当仅 (ctrl+shift+R) 刷新浏览器时,“您所做的更改可能不会被保存。” 将显示默认消息。否则什么都没有。

<script type="text/javascript">

  window.addEventListener('beforeunload', function (e) 
  {
  // Cancel the event
  e.preventDefault();
  console.log(e);
  // Chrome requires returnValue to be set
  e.returnValue = 'Are you sure?';
  });


</script>

重新加载页面时返回此警告“[Violation] 向阻止滚动的“touchstart”事件添加了非被动事件侦听器。考虑将事件处理程序标记为“被动”以使页面更具响应性。见https://www.chromestatus.com/feature/5745543795965952 '

标签: javascriptlaravel-5preventdefaultonbeforeunload

解决方案


我刚刚在 Chrome 中测试了这个(使用 DevTools),它可以从另一个 SO 答案中工作,在这里:

检测浏览器或标签页关闭

window.addEventListener("beforeunload", function (e) {
  var confirmationMessage = "\o/";

  (e || window.event).returnValue = confirmationMessage; //Gecko + IE
  return confirmationMessage;                            //Webkit, Safari, Chrome
});

如果这不起作用,请考虑您的事件侦听器是否正在注册。


推荐阅读