如何解决EventListener beforeunload和JavaScript全局变量
我有一个SpringBoot / JSP / JavaScript应用程序,并且仅当更改页面的命令不是来自应用程序内部时,才尝试触发 beforeunload 浏览器弹出消息。来自浏览器(后退,前进,刷新,主页等)
因此,每次点击应用中的按钮时,我都会
我100%确信正确设置了全局变量,应用无法禁用按钮并提交表单而不将其设置为true。但是随机的beforeunload事件侦听器似乎无法检测到它:这发生在每个按钮上,有时是在第一次单击页面时立即发生,有时是在单击几次后出现。
这怎么可能?
我的代码:
JS文件顶部的变量声明
let actionFromApp = false;
onButtonClick
function buttonClick(formName) {
setActionFromApp();
disableAllActiveButtons(formName);
document.getElementById(formName).submit();
}
SetActionFromApp
function setActionFromApp() {
actionFromApp = true;
}
EventListener
window.addEventListener("beforeunload",function(event) {
if (!actionFromApp) {
event.preventDefault();
event.returnValue = true;
}
});
我知道删除 if 子句或将其设置为true时,EventListener都可以正常工作。
干杯。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。