关闭选项卡/浏览器前的确认
Confirmation before closing of tab/browser
如何在用户离开页面之前像在gmail中一样询问用户的确认?
我在各个地方搜索了这个问题,但他们提到的只是javascript window.unload和window.onbeforeunload的使用。此外,它在大多数情况下在 chrome 中不起作用,因为它会被阻止。
试试这个:
<script>
window.onbeforeunload = function (e) {
e = e || window.event;
// For IE and Firefox prior to version 4
if (e) {
e.returnValue = 'Sure?';
}
// For Safari
return 'Sure?';
};
</script>
这是一个工作的小提琴
试试这个:
<script>
window.onbeforeunload = function(e) {
return 'Dialog text here.';
};
</script>
更多信息在这里 MDN.
2020年最短的解决方案(对于那些不需要支持IE的快乐的人)
在Chrome,Firefox,Safari中测试。
function onBeforeUnload(e) {
if (thereAreUnsavedChanges()) {
e.preventDefault();
e.returnValue = '';
return;
}
delete e['returnValue'];
}
window.addEventListener('beforeunload', onBeforeUnload);
实际上,没有一个现代浏览器(Chrome,Firefox,Safari)将"返回值"作为用户的问题显示。相反,它们显示自己的确认文本(这取决于浏览器)。但是我们仍然需要返回一些(甚至是空的)字符串才能在Chrome上触发该确认。
更多解释见MDN在这里和这里。
我阅读了有关答案集的评论,设置为"正常"。大多数用户要求应该允许按钮和某些链接单击。在这里,将向现有代码添加一行。
<script type="text/javascript">
var hook = true;
window.onbeforeunload = function() {
if (hook) {
return "Did you save your stuff?"
}
}
function unhook() {
hook=false;
}
调用 unhook() on单击您想要允许的按钮和链接。例如
<a href="#" onClick="unhook()">This link will allow navigation</a>
function goodbye(e) {
if(!e) e = window.event;
//e.cancelBubble is supported by IE - this will kill the bubbling process.
e.cancelBubble = true;
e.returnValue = 'You sure you want to leave?'; //This is displayed on the dialog
//e.stopPropagation works in Firefox.
if (e.stopPropagation) {
e.stopPropagation();
e.preventDefault();
}
}
window.onbeforeunload=goodbye;
如果你想根据条件提问:
var ask = true
window.onbeforeunload = function (e) {
if(!ask) return null
e = e || window.event;
//old browsers
if (e) {e.returnValue = 'Sure?';}
//safari, chrome(chrome ignores text)
return 'Sure?';
};
- 假设我想关闭一个窗口,如果什么都没有选择,则
- 我想关闭窗口并选中某些内容,但不提示我。
- 我想关闭一个窗口,但选择了某些内容提示我。
对于这三个条件,我在下面的代码中搜索了很多,进行了适合我需求的更改,希望帮助其他人。问是一个键,如果我想弹出提示"true"将提示您关闭窗口,否则不会。 假设我想打印我的文档并重定向我的页面,询问将是错误的,并且不会有提示。假设您的页面有数据,然后检查一个条件是我的情况,如果小计为零,则值小计为零,则没有提示其他明智的提示我您的页面中有内容。
<pre>
var ask = true;
window.onbeforeunload = function(e) {
if (!ask) return null
var subtotal = $('#lblgtwithsgst').text();
if (subtotal != '0') {
e = e || window.event;
//old browsers
if (e) {
e.returnValue = 'Sure?';
}
//safari, chrome(chrome ignores text)
return 'Sure?';
}
}
$('#btnPrint').click(function(){
ask = false;
///print your doc no prompt if ask is false;
)};
// use jquery version older than 1.6
var preventUnloadPrompt;
var messageBeforeUnload =
'my message here - Are you sure you want to leave this page?';
$('a').live('click', function () {
preventUnloadPrompt = true;
});
$('form').live('submit', function () {
preventUnloadPrompt = true;
});
$(window).bind('beforeunload', function (e) {
var rval;
if (preventUnloadPrompt) {
return;
} else {
return messageBeforeUnload;
}
return rval;
});
对于角度,更改组件表单名称并粘贴到需要显示警报的组件中。
@HostListener('window:beforeunload', ['$event'])
beforeunloadHandler(event) {
return !this.form.dirty;
}
- 浏览器返回按钮上的确认框
- 在浏览器关闭时,单击确认对话框中的“停留在页面上”,执行一个方法
- 当用户单击关闭浏览器时(但不是当用户单击刷新按钮时),JavaScript会确认启动
- 如何在无需确认的情况下在web浏览器中打印页面
- 如何在没有用户确认的情况下在iPhone的浏览器中启动音频
- 使javascript警报/确认对话框更加可见(特别是在Google Chrome浏览器中)
- 如何在用户尝试刷新浏览器时获取“确认表单重新提交”
- 在离开站点跨浏览器 (JS) 之前确认消息
- 浏览器确认关闭:取消按钮也会关闭浏览器
- 关闭选项卡/浏览器前的确认
- Javascript 如何在 iOS 上的 Safari 中确认浏览器关闭
- 单击浏览器/标签关闭按钮时的确认框
- 当用户点击web浏览器中的关闭按钮时,jquery确认框's窗口
- 关闭浏览器选项卡时,如何在确认框中默认选择“取消”
- 浏览器后退按钮点击确认框
- 如果确认消息idle强制关闭javascript中的浏览器
- 将确认警报从Node/Express发送到浏览器,而无需重新加载页面
- IE9确认浏览器退出
- 如何确认浏览器已安装Firebug
- 如何使用Javascript确认浏览器窗口已打开