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

javascript - iPhone/iTouch 未触发(新图像)请求 onunload

嘿伙计们,希望有人可以帮助我。

我正在制作一个小应用程序来记录点击,这很好,直到我点击了 iPhone/iTouch。我想指出,我一直在用 iTouch 进​​行测试,我只是假设 iPhone 上也会发生同样的事情。

我现在所拥有的是与此类似的东西,

这段代码适用于我所有的桌面浏览器,包括 Safari,但在 iTouch/iPhone 上,不行。如果我在任何 onunload 实践之外执行 save() 函数,数据发送就好了。由于警报,我知道 onunload 有效。但是我对图像对象在这种情况下不工作,但在其他任何地方都工作感到非常困惑。我在网上查了很多,没有找到解决办法。

也许这里有人可以给我一个解决方案或解释为什么会这样?我会很感激。感谢您的时间。

0 投票
4 回答
7153 浏览

javascript - 在手动刷新页面后触发 onunload 处理程序中的 jQuery ajax 调用。我如何保证 onunload 先发生?

我有一种情况,在页面卸载时,我发出了删除用户作品草稿的请求。这工作正常,直到用户选择刷新页面,然后检查 Chrome 的网络选项卡显示 Chrome 在实际触发 ajax 请求之前正在加载新页面。结果是页面加载创建了一个新草稿,然后通过 ajax 调用立即删除。这基本上是我正在做的事情:

有没有办法在发送新页面的请求之前强制 onunload 处理程序完成?

测试的浏览器:(Chrome 9,FF 3.6)在 Ubuntu 10.04 Lucid 上

0 投票
1 回答
1996 浏览

ruby-on-rails-3 - Rails 3 表单助手防止用户离开并丢失更改?

如果用户在当前页面的表单中输入了某些内容,是否有 Rails 助手或 Rails 方法可以防止用户离开当前页面?

如果他们在表单中有未保存的更改,我试图防止人们在单击标题链接时丢失数据。

0 投票
3 回答
22883 浏览

javascript - window.onbeforeunload 确认对话框的捕获结果

有没有一种方法可以从 Stack Overflow 捕获如下window.onbeforeunload确认对话框的结果(在离开“提问”页面而不发布问题时会发生这种情况)?

这就是它在 Chrome 中的显示方式,我相信它在其他浏览器中略有不同,但你总是有某种形式的是/否按钮。

window.onbeforeunload 确认对话框

大概如果他们在事件触发后仍然在有问题的页面上,他们会选择留下来,你可以通过观察 js 的顺序来弄清楚这一点。但是我想知道如何确定他们是否点击了“离开此页面”

我已经实现了如下:

注意我在我的网站中使用 jQuery。

我本质上是在尝试实现类似 Gmail 的草拟实现,其中如果用户离开页面时使用了他们已更改但未保存的表单,他们会被类似的对话框加热。如果他们选择放弃他们所做的更改并离开页面,我需要从数据库中清理一些临时记录(我正在考虑 AJAX 调用,或者只是提交带有delete标志的表单),然后将它们发送到他们的路上。

我的问题还涉及:

在手动刷新页面后触发 onunload 处理程序中的 jQuery AJAX 调用。我如何保证 onunload 先发生?

0 投票
1 回答
909 浏览

jquery - 在窗口卸载之前调用 jquery ajax 函数的最终方法是什么?

我需要在窗口卸载之前调用 jquery ajax() 函数。在我的情况下,它是一个 POST,我不关心返回结果,我只想更新一个数据库。

所以答案似乎是将一个函数绑定到 unload 事件,即使用 jquery unload() 函数,并且该函数进行 ajax 调用。另外,我知道您应该在调用中添加同步参数。换句话说,将 async: false 添加到 jquery ajax() 调用中。

但是,我已经尝试了所有这些,但它在 IE8 上不起作用!我已经测试了很多次,它根本无法在 IE8 上运行。在 Firefox 和 Chrome 中运行良好。

更奇怪的是,当我关闭整个 IE8 应用程序后,似乎调用就通过了!是否被缓存?

所以其他人建议使用 jquery bind() 绑定 ajax beforeunload。然而,关于这是否适用于所有浏览器似乎有一些混合的答案。

我还没有尝试过 beforeunload,因为这似乎是一种“hack”方式。但是,如果它有效,那么我真的不在乎,只要它有效。

0 投票
1 回答
4054 浏览

javascript - 在 IE9 的 onunload 事件处理程序中调用时 window.open 不再起作用

在我的 Web 应用程序中,我使用自定义 url 协议启动了一个桌面应用程序。例如:“fakeproto://”将在您的桌面上启动“fakeproto.exe”。如果您不知道我在说什么,请阅读以下内容:将应用程序注册到 URL 协议

不过,我需要一种方法来确保在尝试启动之前在用户的 PC 上安装了“fakeproto.exe”。这有点小技巧,但我让它适用于所有主要浏览器。IE 提出了最多的问题并且有一个独特的实现。

在 Javascript 中,我会首先尝试加载自定义 url 协议:

在此之前,我实际上定义了以下 onunload 事件处理程序:

因此,如果桌面无法识别自定义 url 协议,IE 将直接离开当前页面并转到“网页无法显示”。在这种情况下,onunload 事件处理程序将触发并打开 help.php。

这在 IE7 和 IE8 中效果很好,但是一旦我升级到 IE9,它就不再有效了?它转到“无法显示网页”而不是 help.php。

使用调试器,onunload 事件处理程序正在触发并且代码正在正确执行,但由于某种原因 window.open 调用不起作用???我也禁用了弹出窗口阻止程序,以确保不是那样。没运气。

有人有想法么?有人听说 IE9 对 window.open 更严格吗?有人知道原始问题的任何替代解决方案吗?

顺便说一句,如果我打开 help.php 到一个新窗口,我可以让它工作。

但这仅在禁用任何弹出窗口阻止程序时才有效。我想避免使用这个解决方案。

0 投票
1 回答
455 浏览

javascript - 如何区分 JavaScript 中的重新加载和关闭?

所以我有一种情况,用户可以重新加载或关闭浏览器选项卡。在这两种情况下,我都希望脚本采取不同的行动。有没有一种方法可以区分重新加载(生成 onUnload 后跟 onLoad 事件)和用户关闭选项卡(生成 onUnload 事件)?

0 投票
1 回答
397 浏览

javascript - JavaScript:如何中止卸载并进行 JavaScript 调用?

我想在evere onunload 事件中进行一个jQuery 调用,它可以在一秒钟内切换几个div。然后我想做卸载。

我怎样才能让卸载超时一秒钟并在这段时间内进行 jQuery 调用?

感谢帮助!

弗洛

编辑:

好的,我认为,最通行的解决方案是每个链接都获得这样的 javascript 调用,而不是通常的链接:

和功能链接:

但是感谢您的帮助;)

0 投票
2 回答
1220 浏览

ajax - 无法在 Firefox 4 中触发卸载事件

我已经在卸载事件上运行 ajax 调用大约一年了。它通常在 FF 和 IE 中工作,但不是 100%,我不能说它什么时候失败了。我通过在 bodytag 中写入来注册事件:
onunload="...."
我在 FF4 中收到错误消息,因为 unload 事件还想写入刚刚卸载的页面的 div 标记。如果目标 div 的 id 是“虚拟”,则通过使 ajax 例程不写入任何内容来解决此问题 我不是 AJAX 专家,但以下代码有效:http: //yorabbit.info/e-dog.info/tmp /ajax_ex.php (链接是一个文本页面)
(您使用以下参数调用 ajaxfunction2:文件名、PHP 的 queryString、更新期间在目标 div 中显示的字符串、目标 div 的名称)

我在 FF 错误控制台中没有收到任何错误消息,并且 IE9 可以正常工作。有什么办法可以让它在FF中工作吗?我刚开始尝试FF4,但我的印象是它的效果不如FF3。

谢谢。

(我在出差,无法立即回复,但非常感谢您的建议,并会在适当的时候回复)

编辑:我最好添加以下内容: 我在卸载时进行的 AJAX 调用只会将一些数据(用户在页面上停留的时间)发送到 PHP-MySQL 服务器

0 投票
2 回答
2008 浏览

jquery - jquery ajax 和 google chrome 的问题

我正在使用 jQuery 在离开页面时向用户显示确认消息,如下所示:

另一方面

刷新页面时在 Google Chrome 中运行代码时出现问题。我见过很多这样的问题,但没有有用的答案。

在手动刷新页面后触发 onunload 处理程序中的 jQuery ajax 调用。我如何保证 onunload 先发生?

Chrome 中的 window.onbeforeunload ajax 请求

谢谢,萨拉