6

我正在尝试在浏览器窗口/标签关闭时打开一个自定义弹出窗口。

详细地说,如果用户单击浏览器窗口/选项卡关闭按钮,则会出现一个带有一些内容的自定义弹出窗口,或者可能有一些选项要求关闭或继续页面。

这是仅带来默认警报弹出窗口的代码:

window.onbeforeunload = function() {
              var message = 'Do you want to leave this page?';
              return message;
          }
4

6 回答 6

8

<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
	<title>K3logics.com</title>
	<script>
		var mouseX = 0;
		var mouseY = 0;
		var popupCounter = 0;

		document.addEventListener("mousemove", function(e) {
			mouseX = e.clientX;
			mouseY = e.clientY;
			document.getElementById("coordinates").innerHTML = "<br />X: " + e.clientX + "px<br />Y: " + e.clientY + "px";
		});

		$(document).mouseleave(function () {
			if (mouseY < 100) {
				if (popupCounter < 1) {
					alert("Please do not close the tab!");
				}
				popupCounter ++;
			}
		});

	</script>
</head>
<body>
	<div id="page-wrap">
		<span id="coordinates"></span>	
		<h1>Hi, Move your mouse cursor around then try to close the window of browser! - <a href="https://www.k3logics.com" target="_blank">https://www.k3logics.com</a></h1>
	</div>
</body>
</html>

于 2018-11-13T12:50:44.043 回答
6

我也建议你不要这样做,但是,你问了一个问题,应该得到一个答案。

更新 (2022) 由于新的浏览器安全设置,此代码不再有效。

var popit = true;
window.onbeforeunload = function() {
  if (popit == true) {
    popit = false;
    return "Are you sure you want to leave?";
  }
}

于 2013-10-09T04:42:47.463 回答
2

在此处输入图像描述

在 2019 年 10 月,可以在 Internet Explorer https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event

于 2019-10-02T23:04:33.247 回答
1
window.onbeforeunload = function (e) 
{
    e = e || window.event;

        e.returnValue = 'You want to leave ? ';


};

jsFiddle

于 2013-10-09T06:41:07.260 回答
0

您正在谈论的功能是 window.onbeforeunload 事件,不幸的是,可以自定义它的唯一方法是为用户提供自定义字符串消息,因为滥用的可能性非常高。

在 msdn 上为 Internet Explorer 提供的 api 参考说明:

The default statement that appears in the dialog box, "Are you sure you want to navigate away from this page? ... Press OK to continue, or Cancel to stay on the current page.", cannot be removed or altered.

我认为这意味着对话框本身无法更改,您所能做的就是提供额外的特定于上下文的消息。我找不到 Chrome 的相同参考,但那里似乎是同一个故事。

window.onbeforeunload = function() {
    //all you can do is provide a message..
    return "you have unsaved changes, if you leave they will be lost";
}
于 2013-10-09T04:46:42.543 回答
-7

如果您愿意使用 jQuery UI,那么您可以使用Dialog。简单,看起来很有吸引力。

于 2013-10-09T04:41:58.557 回答