问题标签 [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.
javascript - 如果他们接受对话框,OnBeforeUnload 可以运行代码吗?
我想控制人们离开我的应用程序的难易程度。现在,我知道我不能完全做到;这就是 cron 工作的用途。但我想抓住尽可能多的案例。
我想,我可以用它onBeforeUnload
来显示对话框,警告他们离开并要求他们点击退出按钮。
但后来我发现可以在调用时运行同步 AJAX (heh) 调用onBeforeUnload
;据我了解,它同步的好处是浏览器将等待它完成后再继续。这样,我可以在服务器关闭窗口时告诉服务器我正在注销。并且因为它是 inonBeforeUnload
而不是onUnload
,所以所有的数据仍然存在并且呼叫将被发送。
我的问题是,是否可以将这些结合起来?我想要一个弹出窗口警告他们离开,然后如果他们继续想离开,请发送他们实际上要离开的消息。
按照我的理解,我不能这样做;我可以:
- 只发送消息
- 只打开对话框
- 发送消息并打开对话框
...但是如果他们接受了对话,我就不能有条件地发送消息,对吗?我的理解是,当他们单击“确定,我想离开”时,它会立即触发onUnload
,到那时为时已晚。上面的#3 没有用,因为我不想发送他们正在注销的消息,然后让他们取消对话框并留在页面上。
我可以把我的蛋糕也吃掉吗?我可以问他们是否想离开,如果愿意,发送消息吗?
iframe - iframe 上的 onbeforeunload 事件未在 google chrome 中触发,适用于 IE、firefox
如果您在 iframe 中设置 unbeforeunload 事件,则不会在您点击进入 iframe 中的链接时触发此事件。它适用于 IE 和 Firefox(不是 Opera,但 Opera 通常不支持 onbeforeunload AFAIK)。
只是想知道,我做错了什么吗?这种行为不应该是可能的吗?还是 Google Chrome/webkit 中的错误?任何解决方法?
代码示例:
测试.html:
测试2.html:
javascript - window.onbeforeunload 在 iPad 上不起作用?
有谁知道onbeforeunload
iPad 是否支持该事件和/或是否有不同的使用方式?
我已经尝试了几乎所有东西,似乎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
因此,浏览器确实具有该属性,但由于某种原因它没有被触发。
我尝试离开页面的方法是单击后退和前进按钮,在顶部栏中进行谷歌搜索,更改地址栏中的位置以及单击书签。
有没有人知道发生了什么?我将不胜感激任何意见。
谢谢
javascript - 用户退出浏览器时显示自定义对话框?
是的,我意识到这是可怕的用户界面和糟糕的可访问性,但由于合同工作(我最初没有同意并坚持),我被迫寻找选项。
我知道您可以分配一个事件处理程序来onbeforeunload
喜欢:
这将导致操作系统/浏览器生成一个无法自定义的对话框。它会要求您取消您的请求或继续。
到目前为止,似乎我可以显示任何自定义的唯一方法是window.open
在该事件处理程序中插入一个:
这很可能会被任何现代浏览器阻止为“弹出窗口”。我必须用我的对话框显示一个全新的页面,但这似乎是满足需求的唯一方法。
这几乎是我唯一的选择吗?除了强行告诉客户不建议这样做吗?
唯一的其他选择是依靠用户点击“取消请求”然后插入对话框。
我已经看过的问题:
javascript - onBeforeUnload - 如何在没有 ajax 的情况下调用服务器端函数
我想要做的:在客户端检测到“OnBeforeUnload”事件后处理会话。我知道它不会 100% 触发(90% 的准确度对我来说很好)
在这里,我看到了如何使用 ajax 来做到这一点,但是,这个系统被 ajax 破坏了:我根本无法使用它。
我正在寻找方法
javascript - 离开页面前执行 GET 请求
如果 GET 请求如下
并且页面在 GET 请求完成之前被放弃,
目标服务器还会处理请求吗?或者它会以某种方式消失?
我想在beforeunload
触发时发送服务器数据,但不会从用户那里窃取无用的 ms。
如果有人可以帮助我,那将非常有用。
jquery - 满足条件时显示警报,类似于 onbeforeunload
我有一个分为 5 个步骤的表格。目前,如果您在步骤 2-4 中刷新/退出/关闭等,它会通过 window.onbeforeunload 返回一条消息,那里没有问题。
现在,如果复选框“A”被选中并且复选框“B”未被选中,我需要在 step0(第一步)上添加相同或相似类型的行为。这可行,但不能与另一个 .onbeforeunload 函数结合使用
我怎样才能将这两个链接在一起?使用 if, else 语句似乎不起作用。
javascript - 如何在 jQuerys unload() 的回调中判断窗口是否正在关闭;方法
是否可以确定触发了哪种类型的事件$(window).unload();
?更具体地说,我只对用户关闭窗口(弹出窗口)的事件感兴趣,而不是当他刚刚离开当前页面时。
我查看了传递给回调的事件参数,unload();
但该对象中似乎没有任何内容,这将是有用的。
有谁知道解决这个问题?
代码:
javascript - 提示用户在离开网页之前填写表格 - 通过 Javascript
我的网页上有一个网络表单。在用户离开页面之前,我想要一条 javascript 弹出消息,询问用户是否完成了带有“是”或“否”按钮的表单。如果用户单击“是”,那么他们将被带到他们打算去的页面。但是,如果用户单击“否”,则用户仍停留在该页面上。
我对 Javascript 不是很熟悉,因此非常感谢任何指导。我怀疑我会使用以下内容:
提前致谢。
分裂P。
javascript - 窗口 beforeunload 显示两个对话框
我有这个 jQuery 代码;
当我关闭窗口时,我收到确认请求,如果我点击“取消”,我会收到第二次确认,上面写着;
“您确定要离开此页面吗?”
“错误的”
“按 OK 继续,或按 Cancel 留在当前页面。”
为什么我得到第二个对话框,有没有办法删除它?
编辑
已将代码更改为;
但是没有出现确认消息。该事件正在触发,因为我可以在其中放置警报并查看警报。
编辑 2
已将代码更改为此;
它有效,但我的消息上方和下方还有其他文字;
“您确定要离开此页面吗?”
“你还没有保存你的博客条目。”
“按 OK 继续,或按 Cancel 留在当前页面。”