我正在尝试实现该功能,以确认每当用户尝试关闭浏览器时是否“离开页面”。 截至目前我已实施,
function closeIt(e) {
// For IE and Firefox prior to version 4
if (e) {
e.returnValue = 'Sure?';
}
} window.onbeforeunload = closeIt;
这适用于关闭浏览器,但适用于页面中的所有链接,因为有条件来识别导致onbeforeunload事件的原因。 任何人都可以帮我识别它们。
提前致谢。
答案 0 :(得分:0)
参考各种文章,做一些试验和错误,最终开发出这个想法,这对我来说非常适合我希望它发生的方式。逻辑很简单它实现也很简单。想法是检测通过关闭浏览器触发的卸载事件。在这种情况下,鼠标将离开窗口,指出关闭(' X')按钮。
$(window).on('mouseover', (function () {
window.onbeforeunload = null;
}));
$(window).on('mouseout', (function () {
window.onbeforeunload = ConfirmLeave;
}));
function ConfirmLeave() {
return "";
}
//Edit start
var prevKey=""
$(document).keydown(function (e) {
if (e.key=="F5") {
window.onbeforeunload = ConfirmLeave;
}
else if (e.key.toUpperCase() == "W" && prevKey == "CONTROL") {
window.onbeforeunload = ConfirmLeave;
}
else if (e.key.toUpperCase() == "R" && prevKey == "CONTROL") {
window.onbeforeunload = ConfirmLeave;
}
else if (e.key.toUpperCase() == "F4" && (prevKey == "ALT" || prevKey == "CONTROL")) {
window.onbeforeunload = ConfirmLeave;
}
prevKey = e.key.toUpperCase();
//Edit End
ConfirmLeave函数会弹出默认消息,如果需要自定义消息,则返回要显示的文本而不是空字符串。
请注意,e.key在某些版本的chrome中返回undefined,因此最好使用e.keyCode获取键值,并参考http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes获取值