问题标签 [window.onunload]

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 投票
2 回答
597 浏览

jquery - Dropzone 防止页面卸载

我正在使用 dropzone 上传文件,但我想防止在上传期间卸载页面。如何将 dropzone 与 同步window.onbeforeunload

0 投票
1 回答
412 浏览

javascript - 卸载页面前的自定义 JQuery 对话框

当用户尝试离开当前页面/表单或尝试关闭窗口时,想要显示带有 Yes 、 No 和 Cancel 按钮的自定义 jquery 对话框。

在 beforeload 事件上显示默认浏览器对话框确认。我不想显示那个对话。

是否可以阻止默认卸载事件并显示自定义对话框?

0 投票
1 回答
307 浏览

javascript - 在取消确认导航时执行代码

我正在使用一个简单的 on before unload 脚本来询问用户是否确定要离开该页面。

如果他们点击取消(导航)或点击确认(导航),有什么方法可以运行一个函数

谢谢 :)

0 投票
1 回答
121 浏览

sencha-touch-2 - Sencha touch 2 - 如何检测用户何时从一个 URL 导航到另一个?

我正在开发一个 Sencha touch 2 应用程序,我想在其中检测用户何时从一个页面导航到另一个页面。我想调用一个函数,就像 javascript 中的“onunload”一样。有什么建议么?提前致谢。

0 投票
3 回答
1611 浏览

javascript - 如何调用 window.unload

我正在使用 Web 套接字连接进行通信。但是当用户刷新页面时,我想关闭这个网络套接字连接。我还使用window.onbeforeunload事件向用户显示自定义文本的确认框。如果用户选择“不重新加载”选项,则无操作(工作正常)但如果用户选择重新加载选项,我想关闭 Web 套接字连接。我不知道如何实现这一点。我试图打电话window.unload并试图关闭网络套接字连接,但它不起作用。我的代码如下。

请告知如何实现这一目标。

0 投票
0 回答
283 浏览

javascript - 关闭浏览器前弹出Javascript多次确认离开导航框

几年前,我被 Rick Roll 打得很惨。我被送到了一个网站,那里正在播放 Rick Astley 的经典“Never Gonna Give You Up”音乐视频。当我退出网页时,弹出一个确认对话框,其中包含歌曲的第一行歌词。我按了确定,但随后另一个框弹出第二行歌词。这循环直到我浏览了整首歌曲(弹出了许多对话框),然后它终于让我关闭了网页。

我将如何在我的网页代码中实现类似的东西?

我在整个互联网上进行了搜索,并遇到了多个关于在 HTML 和 Javascript 中使用“onbeforeunload”或类似方法的线程,但与此相关的所有答案只允许开发人员自定义用户尝试离开时显示的消息网站。我完全理解如何做到这一点,但这不是我想要的。

我看到一些人在其他线程上回答了我的问题,但这些答案实际上不起作用。很多人说不可能做到这一点,但是我质疑像Rick Roll这样的网站是怎么做到的呢?

谢谢!

0 投票
2 回答
686 浏览

javascript - 关闭窗口前的 img 请求

我遇到需要在浏览器窗口关闭之前可靠地发送数据的情况。我目前的实现是使用同步 AJAX 调用。然而,这在不久的将来不太可能奏效,因为根据https://xhr.spec.whatwg.org/#synchronous-flag浏览器正在弃用同步 XHR 调用

我正在尝试用假的“img”调用替换 ajax 调用,参数化要发送的数据并将其附加为图像的 url 查询字符串。到目前为止,我尝试过似乎有效。我并不真正关心服务器响应,因此只要在卸载浏览器窗口之前发出请求并将其推送到线路。

我的问题是它有多可靠?有没有人有任何经验?

我的其他选择是将数据保存在 cookie 或网络存储中,并在下一个请求时发送它们,但这是基于用户将重新访问的假设,这在我的情况下可能不是真的。

谢谢。

0 投票
0 回答
1959 浏览

javascript - 检测 chrome 扩展弹出窗口何时关闭并保存数据

当用户不按保存并且 chrome 扩展弹出窗口关闭或导航到不同的选项卡时,我试图防止信息丢失。我保存弹出窗口中的文本,并在再次打开弹出窗口后将其放回原处。

所以,我有这段代码来检测 background.js 中的关闭弹出窗口:

在另一个函数中,一旦再次加载弹出窗口,我将数据设置回

但是,这仅在某些时候有效。我看过其他帖子说 chrome 有一个错误:检测卸载事件。但是,我看到的问题很奇怪。当我没有打开我的后台页面检查视图时,在导航离开并重新打开它后,数据不会显示在弹出窗口的文本框中。但是,如果我打开后台页面检查视图,数据会显示在文本框中...我是 Chrome 扩展程序开发的新手,有人可以帮我解决这个问题吗?

我还尝试了设置消息传递端口的其他建议,但不确定如何正确执行此操作。在 background.js 中:

我还需要什么吗?我在哪里设置端口和 chrome.runtime.onConnect?这个代码是什么?

0 投票
1 回答
71 浏览

javascript - 浏览器在执行“卸载”处理程序之前发送 http 请求

我刚刚发现了以下内容(通过为客户端和服务器端代码设置多个断点):

如果你有一个window.onunload处理程序 - 它会在浏览器发送 http-request 到新页面之后执行

  1. 您导航到下一页
  2. 浏览器向新页面发送 http-request
  3. 浏览器执行卸载处理程序并暂停渲染过程,直到它完成执行。
  4. 显示新页面。

我刚刚用 Chrome 和 Firefox 测试了这个。

怎么来的?您认为这种奇怪行为的原因是什么?

PS。我是这样发现的:我有一个卸载处理程序,它通过 ajax 保存了一些数据。然后我发现我正在导航的新页面 - 仍然显示来自数据库的旧数据。这让我想...

0 投票
1 回答
1109 浏览

javascript - 处理 grails 中对象的未保存状态

我有一个问题,可能是设计问题而不是技术问题。

假设我有这些课程:

现在假设用户在一个页面上,他可以在其中编辑 A 的 b,并且可以添加新的 b。但是用户需要将他的更改保存到 A,否则一切都会被丢弃。

我目前的方法是创建额外的 b,通过 AJAX 渲染它们并将它们的 ID 保存在会话变量中,这样我就可以删除“未保存”的 b。

这工作得很好,但对于一个常见的用例:用户刷新页面。

我使用 window.onunload-event 通知用户他将丢失未保存的更改,并对其中的删除函数进行 AJAX 调用以从会话变量中删除 b。不幸的是,在我删除 b 之前调用了 A 控制器的索引函数。这意味着,“未保存”的 b 会显示出来,不久之后它们将被删除,这将迫使我进行刷新或等待 b 以某种方式被删除。

也许我尝试完成它的方式无论如何都是错误的 - 在这种情况下,我很乐意提出任何建议。

所以问题是:如何关注可能被丢弃的新对象,而不需要将它的所有信息存储在隐藏字段中以在保存功能上创建它们?

更新:

我应该在之前提到它,但我认为它不是那么重要。

B 是一个抽象类,它被许多类扩展,例如以下示例:

除此之外,B 有一个整数字段,表示 A 中 b 的集合中的位置。我知道我可以为此使用 SortedSet,但由于某些特定原因,它必须是一个单独的字段。我提到这一点是因为视图将每个元素呈现为可排序列表的一个元素,可以通过拖放重新排序。

用例:用户添加一些 childOfB、anotherChildOfB 并根据需要对它们重新排序。我如何在不将类型存储在视图中的情况下跟踪它们的类型,我认为这也是不好的做法?

问候