我需要显示一个弹出窗口,指出页面上有未保存的更改。每当我的表单的保存按钮被启用并且用户试图离开页面我需要显示此弹出窗口。
问题是,点击SAVE按钮后,我进行AJAX调用以在后端存储数据。如果AJAX调用成功,那么我将用户重定向到其他页面。当我们离开当前页面时,我会弹出未保存的数据。
所以,基本上我不希望在由于成功保存而完成重定向时显示弹出窗口。 这是我用过的代码
window.onbeforeunload = function(evt) {
var disabled = $("#save").is(":disabled");
if(!disabled){
var msg = "save data before navigating.";
return evt = evt || window.event,
evt.returnValue = msg, msg
}
}
});
我还尝试使用document.activeElement
检查焦点按钮是否为SAVE按钮。但是document.activeElement
在MAC浏览器中无法正常工作,特别是在FireFox(Mac上为47.0.1)以及Safari(Mac和Windows)上。
请建议替代方案,以检测导航是否因点击“保存”按钮而导致