javascript - 无法在 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 '
解决方案
我刚刚在 Chrome 中测试了这个(使用 DevTools),它可以从另一个 SO 答案中工作,在这里:
window.addEventListener("beforeunload", function (e) {
var confirmationMessage = "\o/";
(e || window.event).returnValue = confirmationMessage; //Gecko + IE
return confirmationMessage; //Webkit, Safari, Chrome
});
如果这不起作用,请考虑您的事件侦听器是否正在注册。
推荐阅读
- winapi - MFC:如何更改 CTreeView 上使用的 CEdit 的高度来更改标签?
- javascript - React - 从另一个子组件更改子组件中的状态
- java - 如何以编程方式在 Android 移动设备上添加 LDAP 帐户?
- debugging - 调试 COM 互操作 HResult 代码 (VSTO)
- powershell - 哈希/数组 - ConvertTo-Json 的格式问题
- java - Logstash Oracle 驱动程序问题
- reactjs - 预期状态与 componentDidMount 之前的记忆状态匹配
- r - LightGBM 软件包未安装在 Windows 机器上
- java - 使用 Spark Launcher 以编程方式检测已完成的失败 Spark 作业
- json - 使用 Postgres 查询访问 JSON 中的数组