如何在用户离开Gmail之前要求用户确认?
我在各个地方搜索了这个问题,但他们提到的只是使用javascript window.unload和window.onbeforeunload。而且,由于它被阻塞,大多数情况下在chrome中都不起作用。
如何在用户离开Gmail之前要求用户确认?
我在各个地方搜索了这个问题,但他们提到的只是使用javascript window.unload和window.onbeforeunload。而且,由于它被阻塞,大多数情况下在chrome中都不起作用。
onbeforeunload正确使用的问题
Answers:
尝试这个:
<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>
这是一个工作的jsFiddle
event.target一下click事件是否起源于您的页面容器。
我读了关于设置为“好的”的答案的评论。大多数用户要求按钮和某些链接单击应被允许。在这里,将在现有代码中再增加一行。
<script type="text/javascript">
var hook = true;
window.onbeforeunload = function() {
if (hook) {
return "Did you save your stuff?"
}
}
function unhook() {
hook=false;
}
调用unhook()onClick查找要允许的按钮和链接。例如
<a href="#" onClick="unhook()">This link will allow navigation</a>
onclick="hook = false;"
在为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上触发该确认。
只是
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;