javascript - 离开页面之前的 Javascript,除非单击按类或 ID 的元素
问题描述
我有以下代码可以很好地防止用户在保存更改之前离开页面。我需要做的不是当用户按 ID 或类名单击按钮时显示消息
因此,在这种情况下,如果用户尝试刷新页面,则返回历史记录或任何将出现的消息,除非我不希望在用户单击保存按钮时出现该消息。这可能吗?
HTML
<button id="save">Save Changes</button>
or
<button class="save">Save Changes</button>
JAVASCRIPT
<script type='text/javascript'>
function goodbye(e) {
if(!e) e = window.event;
e.cancelBubble = true;
e.returnValue = 'You sure you want to leave?';
if (e.stopPropagation) {
e.stopPropagation();
e.preventDefault();
}
}
window.onbeforeunload=goodbye;
</script>
解决方案
在 for 上添加一个事件侦听window
器beforeunload
,并在单击按钮时将其删除
function goodbye(e) {
if (!e) e = window.event;
e.cancelBubble = true;
e.returnValue = 'You sure you want to leave?';
if (e.stopPropagation) {
e.stopPropagation();
e.preventDefault();
}
}
window.addEventListener('beforeunload', goodbye);
document.querySelector('#save').addEventListener('click', function() {
window.removeEventListener('beforeunload', goodbye);
});
<button id="save">Save Changes</button>
推荐阅读
- cmake - Qt 和 CMake 集成
- javascript - 文本悬停效果,如淘汰赛
- mysql - 将两个查询转换为一个更新查询
- workflow - 2018年Shopify本地主题开发环境
- spring - 字段“”上的对象“目标”中的字段错误:拒绝值 [];代码 [typeMismatch.target.,typeMismatch.,typeMismatch.java.util.Date,typeMismatch]
- sql - SQL Hasmany 查询选择 1
- c# - 表单不发布也不调用控制器方法
- twilio - 如果正文是 JSON,twilio studio 不允许 HTTP 请求中的标头
- ember.js - Ember 重新加载 belongsTo 关系
- android - 如何干扰 RecyclerView 的不可见项?