在BeforeUnload事件中检查是否发生了刷新操作,如果是则将一个标志位设为true,同时把弹出离开对话框的功能放到Unload事件中。
代码示例如下:
let isRefreshing = false;
window.addEventListener("beforeunload", function(event) {
if(performance.navigation.type === 1) { // 发生了刷新操作
isRefreshing = true;
}
});
window.addEventListener("unload", function(event) {
if(!isRefreshing) {
event.returnValue = "您确定要离开吗?";
}
});
在这个示例中,我们使用了performance.navigation的type属性来检查是否发生了刷新操作。如果是,则将isRefreshing标志位设为true。在Unload事件中,如果isRefreshing为false,那么就会弹出离开对话框,否则就不会弹出。