问题描述
我有一个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 (将#修改为@)