问题标签 [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 投票
1 回答
2496 浏览

javascript - 如果他们接受对话框,On​​BeforeUnload 可以运行代码吗?

我想控制人们离开我的应用程序的难易程度。现在,我知道我不能完全做到;这就是 cron 工作的用途。但我想抓住尽可能多的案例。

我想,我可以用它onBeforeUnload来显示对话框,警告他们离开并要求他们点击退出按钮。

但后来我发现可以在调用时运行同步 AJAX (heh) 调用onBeforeUnload;据我了解,它同步的好处是浏览器将等待它完成后再继续。这样,我可以在服务器关闭窗口时告诉服务器我正在注销。并且因为它是 inonBeforeUnload而不是onUnload,所以所有的数据仍然存在并且呼叫将被发送。

我的问题是,是否可以将这些结合起来?我想要一个弹出窗口警告他们离开,然后如果他们继续想离开,请发送他们实际上要离开的消息。

按照我的理解,我不能这样做;我可以:

  1. 只发送消息
  2. 只打开对话框
  3. 发送消息打开对话框

...但是如果他们接受了对话,我就不能有条件地发送消息,对吗?我的理解是,当他们单击“确定,我想离开”时,它会立即触发onUnload,到那时为时已晚。上面的#3 没有用,因为我不想发送他们正在注销的消息,然后让他们取消对话框并留在页面上。

我可以把我的蛋糕也吃掉吗?我可以问他们是否想离开,如果愿意,发送消息吗?

0 投票
4 回答
11236 浏览

iframe - iframe 上的 onbeforeunload 事件未在 google chrome 中触发,适用于 IE、firefox

如果您在 iframe 中设置 unbeforeunload 事件,则不会在您点击进入 iframe 中的链接时触发此事件。它适用于 IE 和 Firefox(不是 Opera,但 Opera 通常不支持 onbeforeunload AFAIK)。

只是想知道,我做错了什么吗?这种行为不应该是可能的吗?还是 Google Chrome/webkit 中的错误?任何解决方法?

代码示例:

测试.html:

测试2.html:

0 投票
8 回答
56936 浏览

javascript - window.onbeforeunload 在 iPad 上不起作用?

有谁知道onbeforeunloadiPad 是否支持该事件和/或是否有不同的使用方式?

我已经尝试了几乎所有东西,似乎onbeforeunload从未在 iPad(Safari 浏览器)上触发该事件。

具体来说,这是我尝试过的:

  • window.onbeforeunload = function(event) { event.returnValue = 'test'; }
  • window.onbeforeunload = function(event) { return 'test'; }
  • (以上两者加起来)
  • window.onbeforeunload = function(event) { alert('test')'; }
  • (所有上述功能,但在里面<body onbeforeunload="...">

所有这些都适用于 PC 上的 FF 和 Safari,但不适用于 iPad。

此外,我在加载页面后完成了以下操作:

结果分别是:

  • true
  • object
  • null

因此,浏览器确实具有该属性,但由于某种原因它没有被触发。

我尝试离开页面的方法是单击后退和前进按钮,在顶部栏中进行谷歌搜索,更改地址栏中的位置以及单击书签。

有没有人知道发生了什么?我将不胜感激任何意见。

谢谢

0 投票
3 回答
10082 浏览

javascript - 用户退出浏览器时显示自定义对话框?

是的,我意识到这是可怕的用户界面和糟糕的可访问性,但由于合同工作(我最初没有同意并坚持),我被迫寻找选项。

我知道您可以分配一个事件处理程序来onbeforeunload喜欢:

这将导致操作系统/浏览器生成一个无法自定义的对话框。它会要求您取消您的请求或继续。

到目前为止,似乎我可以显示任何自定义的唯一方法是window.open在该事件处理程序中插入一个:

这很可能会被任何现代浏览器阻止为“弹出窗口”。我必须用我的对话框显示一个全新的页面,但这似乎是满足需求的唯一方法。

这几乎是我唯一的选择吗?除了强行告诉客户不建议这样做吗?

唯一的其他选择是依靠用户点击“取消请求”然后插入对话框。

已经看过的问题:

0 投票
3 回答
2360 浏览

javascript - onBeforeUnload - 如何在没有 ajax 的情况下调用服务器端函数

我想要做的:在客户端检测到“OnBeforeUnload”事件后处理会话。我知道它不会 100% 触发(90% 的准确度对我来说很好)

在这里,我看到了如何使用 ajax 来做到这一点,但是,这个系统被 ajax 破坏了:我根本无法使用它。

我正在寻找方法

0 投票
2 回答
727 浏览

javascript - 离开页面前执行 GET 请求

如果 GET 请求如下

并且页面在 GET 请求完成之前被放弃

目标服务器还会处理请求吗?或者它会以某种方式消失?


我想在beforeunload触发时发送服务器数据,但不会从用户那里窃取无用的 ms。

如果有人可以帮助我,那将非常有用。

0 投票
1 回答
1302 浏览

jquery - 满足条件时显示警报,类似于 onbeforeunload

我有一个分为 5 个步骤的表格。目前,如果您在步骤 2-4 中刷新/退出/关闭等,它会通过 window.onbeforeunload 返回一条消息,那里没有问题。

现在,如果复选框“A”被选中并且复选框“B”未被选中,我需要在 step0(第一步)上添加相同或相似类型的行为。这可行,但不能与另一个 .onbeforeunload 函数结合使用

我怎样才能将这两个链接在一起?使用 if, else 语句似乎不起作用。

0 投票
1 回答
347 浏览

javascript - 如何在 jQuerys unload() 的回调中判断窗口是否正在关闭;方法

是否可以确定触发了哪种类型的事件$(window).unload();?更具体地说,我只对用户关闭窗口(弹出窗口)的事件感兴趣,而不是当他刚刚离开当前页面时。

我查看了传递给回调的事件参数,unload();但该对象中似乎没有任何内容,这将是有用的。

有谁知道解决这个问题?

代码:

0 投票
2 回答
1708 浏览

javascript - 提示用户在离开网页之前填写表格 - 通过 Javascript

我的网页上有一个网络表单。在用户离开页面之前,我想要一条 javascript 弹出消息,询问用户是否完成了带有“是”或“否”按钮的表单。如果用户单击“是”,那么他们将被带到他们打算去的页面。但是,如果用户单击“否”,则用户仍停留在该页面上。

我对 Javascript 不是很熟悉,因此非常感谢任何指导。我怀疑我会使用以下内容:

提前致谢。

分裂P。

0 投票
1 回答
2505 浏览

javascript - 窗口 beforeunload 显示两个对话框

我有这个 jQuery 代码;

当我关闭窗口时,我收到确认请求,如果我点击“取消”,我会收到第二次确认,上面写着;

“您确定要离开此页面吗?”

“错误的”

“按 OK 继续,或按 Cancel 留在当前页面。”

为什么我得到第二个对话框,有没有办法删除它?

编辑

已将代码更改为;

但是没有出现确认消息。该事件正在触发,因为我可以在其中放置警报并查看警报。

编辑 2

已将代码更改为此;

它有效,但我的消息上方和下方还有其他文字;

“您确定要离开此页面吗?”

“你还没有保存你的博客条目。”

“按 OK 继续,或按 Cancel 留在当前页面。”