问题标签 [onbeforeunload]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
3692 浏览

java - 从 Selenium 测试 onbeforeunload 事件

我正在尝试为使用 onbeforeunload 事件在离开前提示用户的网页编写 Selenium 测试。Selenium 似乎无法识别出现的确认对话框,也无法提供点击 OK 或 Cancel 的方法。有没有办法做到这一点?如果相关的话,我正在使用 Java Selenium 驱动程序。

0 投票
12 回答
388940 浏览

javascript - 如何覆盖 OnBeforeUnload 对话框并将其替换为我自己的?

我需要在用户离开页面之前警告用户未保存的更改(一个很常见的问题)。

这可行,但它会引发一个默认对话框,其中包含我自己的文本的令人讨厌的标准消息。我需要完全替换标准消息,以便我的文本清晰,或者(甚至更好)使用 jQuery 将整个对话框替换为模态对话框。

到目前为止,我失败了,我还没有找到其他似乎有答案的人。甚至可能吗?

我页面中的Javascript:

closeIt() 函数:

使用 jQuery 和 jqModal 我已经尝试过这种事情(使用自定义确认对话框):

这也不起作用 - 我似乎无法绑定到beforeunload事件。

0 投票
4 回答
83668 浏览

javascript - 如何防止关闭浏览器窗口?

我尝试使用以下代码在关闭浏览器窗口时获得警报:

它可以工作,但如果页面包含一个超链接,单击该超链接会引发相同的警报。仅当我关闭浏览器窗口而不是单击超链接时才需要显示警报。

0 投票
4 回答
12971 浏览

javascript - Opera中的onbeforeunload

我正在使用 netadictos 在此处发布到问题的代码。我要做的就是在用户离开或关闭窗口/选项卡时显示警告。

netadictos 发布的代码似乎在 IE7、FF 3.0.5、Safari 3.2.1 和 Chrome 中运行良好,但在 Opera v9.63 中不起作用。有谁知道在 Opera 中做同样的事情的方式?

谢谢,特雷夫

0 投票
3 回答
2138 浏览

c# - 在浏览器关闭时运行服务器端功能

背景:我正在使用 C# Code-Behind 创建一个非常简单的类似聊天室的 ASP.NET 页面。当前用户/聊天消息显示在位于 AJAX 更新面板内的控件中,并使用计时器 - 他们每隔几秒钟从数据库中提取信息。

我试图找到一种简单的方法来处理当用户退出浏览器时将用户的状态设置为“离线”,而不是点击“注销”按钮。IsOnline 的“离线”状态目前只有 1 个字符 (y/n)。

到目前为止,我已经用 Javascript 研究了 window.onbeforeunload,在这个事件上设置了一个带有函数的隐藏表单变量 -> 当然问题是,我仍然需要在我的代码隐藏中测试这个隐藏的表单变量。最终的服务器端数据库查询,有效地将用户设置为离线。

我可能完全混淆了这个可能很简单的问题!当然,我会很感激任何完全不同的替代建议。

谢谢

0 投票
9 回答
31264 浏览

javascript - 我可以防止在进行 AJAX 调用时调用 window.onbeforeunload

我有一个基于 AJAX 的网格控件。

我们连接到 window.onbeforeunload 事件以检查他们是否有未保存的数据,如果有,则向他们显示一条消息“您确定要离开...您有未保存的数据...”。

这一切都很好。

但是 AJAX 调用也会触发 window.onbeforeunload ,所以如果网格有未保存的数据并且我们进行 AJAX 调用(例如删除另一个网格中的一行),用户会得到“你确定要导航离开......你有未保存的数据...”消息不好。

是否可以抑制 AJAX 调用的 onbeforeunload 事件?或者是否有可能检测到一个调用一个 AJAX 调用?否则我们将不得不进行黑客攻击!

谢谢

0 投票
4 回答
13313 浏览

safari - 当用户在 Safari/Chrome 中关闭窗口时,我可以弹出一个确认对话框吗?

在 IE 和 FF 中,我可以将事件处理程序附加到 onBeforeUnload,并通过将字符串传递给事件的属性,用户将看到一个对话框,询问他是否要继续“卸载”(关闭窗口或导航离开)。

Safari 和 Chrome 不支持 onBeforeUnload,onUnload 似乎为时已晚。有没有办法在 Safari/Chrome 中复制相同的功能?

注意:我不是想把用户当作人质。我知道这是唠叨和不酷。事实上,我的网站竭尽全力让用户自由活动,并在他们回来时将所有东西都放在原处。但是,我在 IFrame 中托管其他网站,有时这些网站决定摆脱我并接管浏览器,这是我试图避免的。

谢谢!

0 投票
10 回答
150952 浏览

javascript - 防止网页使用 JavaScript 离开

如何防止网页使用 JavaScript 离开?

0 投票
4 回答
8202 浏览

javascript - 提示onBeforeUnload后检测用户是否停留

在我正在开发的网络应用程序中,我正在捕获 onBeforeUnload 以询问用户他是否真的想退出。

现在,如果他决定留下来,我想做很多事情。我想弄清楚的是,他实际上选择了留下。

我当然可以为“x”秒声明一个 SetTimeout,如果触发,则意味着用户仍然在那里(因为我们没有被卸载)。问题是用户可以花任何时间来决定是否留下......

我最初希望在显示对话框时不会触发 SetTimeout 调用,因此我可以设置一个短时间的超时,并且只有在用户选择留下时才会触发。但是,在显示对话框时会触发超时,因此这不起作用。

我尝试的另一个想法是在窗口/文档上捕获 mouseMoves。显示对话框时,mouseMoves 确实不会触发,除了一个真正适用于我的情况的奇怪异常,因此它也不起作用。

谁能想到其他方法来做到这一点?

谢谢!


(如果您好奇,捕获 mouseMove 不起作用的原因是我的页面中有一个 IFrame,其中包含来自另一个域的站点。如果在卸载页面时,焦点在 IFrame 内,而对话框显示,然后当鼠标从 IFrame 内部移动到外部(至少在 Firefox 中)时,我会触发一次 MouseMove 事件。这可能是一个错误,但在我们的案例中很可能会发生这种情况,所以我不能使用这种方法)。

0 投票
7 回答
21982 浏览

javascript - 仅在字段值更改时激活 OnBeforeUnload

我想要实现的是警告用户未保存的更改,如果他/她试图关闭页面或导航离开它而不先保存。

我设法让OnBeforeUnload()对话框弹出......但如果用户没有修改任何字段值,我根本不希望它显示。为此,我使用了这个名为is_modified的隐藏输入字段,它以默认值false开头,并在编辑任何字段时翻转为true 。

我尝试将更改事件绑定到此 is_modified 字段以尝试检测值更改...然后才激活 OnBeforeUnload。

但据我所知,该change()事件仅在这 3 个步骤之后才起作用 - 一个字段获得焦点,一个值被更改并且该字段失去焦点。在隐藏输入字段的情况下,我不确定这个接收和失去焦点部分是如何工作的!因此,onbeforeunload 功能永远不会被激活。

谁能建议一种方法来维护 is_modified 的触发器?

谢谢。