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

javascript - window.onbeforeunload 可能会触发多次

仅仅因为您看不到某个功能的用途并不意味着它没有用。

Stack Exchange 网络、GMail、Grooveshark、Yahoo!Mail 和 Hotmail 使用 onbeforeunload 提示来防止/警告用户在开始编辑内容后他们将离开页面。哦,是的,几乎每一个接受可保存用户输入数据的桌面程序都使用了这种在离开前提示用户的 UX 模式。


我有一个与此类似的函数:

当用户尝试离开页面时,浏览器会为他们提供离开或留在页面上的选项。如果用户选择“离开此页面选项”,然后他们在页面完全卸载之前再次快速单击链接,则对话框再次触发。

这个问题有没有万无一失的解决方案?


注意:以下不是解决方案:

因为用户可能会选择“留在页面上”选项,这会导致 futureonbeforeunload停止工作。

0 投票
4 回答
38247 浏览

javascript - 有什么方法可以在 iOS 设备的 Mobile Safari 上使用 window.onbeforeunload 吗?

看起来 Apple 已禁用 iOS 设备(iPhone、iPad、iPod Touch)的 window.onbeforeunload 事件。不幸的是,我找不到任何文档说明为什么此事件在 Mobile Safari 中不起作用。

有谁知道这个功能是否有可靠的替代品?Android 的浏览器似乎可以很好地支持它,并且 Safari 桌面应用程序也支持 onbeforeunload 事件而没有问题。

0 投票
4 回答
11457 浏览

javascript - onbeforeunload 需要帮助或单击浏览器后退按钮

如果用户单击浏览器的后退按钮,那么我希望出现提示并要求确认。如果用户单击“确定”,则应导航到xx.html. 如果用户单击“取消”,则应阻止导航。我怎样才能做到这一点?

注意:我已经尝试过该onbeforeunload方法,但它适用于所有导航操作。例如,单击页面上的链接也会触发此事件并向用户显示消息。

0 投票
1 回答
2135 浏览

javascript - window.onbeforeunload 执行查询

当用户离开页面时,我正在尝试执行发布查询。我正在使用的代码是

我在这里做的有什么问题吗?我在 FF 错误控制台中得到的结果只是说没有定义其他不相关的函数/变量(因为它们正在卸载)。关于我需要修复的任何提示或指示?

0 投票
2 回答
2584 浏览

jquery - 禁用 OnBeforeUnload 事件:如何将 Javascript 发送到跨域 iframe?

我想完成一些非常简单的事情。我指的是通过 iframe 的网站。

iframe 有一个调用“onBeforeUnload”的函数。我想从我的父页面在 iframe 中卸载之前禁用 onbefore。

我已经想出了如何在同一域和同一页面上执行此操作。但是,我怎样才能为跨域做到这一点?

无论多么复杂,我都会做任何事情来完成这项工作。

谢谢!

0 投票
3 回答
3422 浏览

php - 检查用户是否在浏览器中点击返回按钮

我正在尝试使用 javascript onbeforeunload事件来询问用户是否要退出页面,但我不希望该事件触发(编辑:“事件”是弹出的对话框询问用户点击确定离开网站或点击取消留在当前页面)如果用户点击后退按钮,因为他们很可能会留在我的网站上。

那么有没有办法判断用户是否使用 javascript 或 PHP 按下了后退按钮?

我得到了一个使用仅在 IE 中工作的隐藏 iframe 的解决方案,但如果可能的话,我需要一些可以在 Firefox、Chrome 和 Safari 上工作的东西。

编辑:我的 IE 解决方案有效,因为当用户点击后退按钮时,iframe 被发回,但父页面仍位于同一位置。从这里我可以看出用户确实点击了后退按钮,所以我然后使用history.back()。这个小技巧在任何其他浏览器中都不起作用(据我所知),所以我正在寻找一个跨浏览器的解决方案。

tl; dr 我正在使用window.onbeforeunload弹出一个对话框,询问用户是否想离开我的网站。当用户点击后退按钮时,我不希望它弹出。我怎样才能知道用户点击了浏览器中的后退按钮?

谢谢,瑞克

0 投票
2 回答
4289 浏览

javascript - Javascript,控制 onbeforeunload 标签

我正在尝试设置一个 onbeforeunload 标记,以阻止用户离开特定页面,当且仅当他们有未保存的内容时,并且仅在特定页面上(我们使用单个母版页)。我很快发现在 onbeforeunload 标记中返回 ##anything## 总是会触发 javascript 确认,并将 ##anything## 放在弹出窗口中。显然,这是现在预期的行为,但它确实消除了我使用我自己的可以通过 if 语句控制的确认框的想法。

我试过这个,它没有用:

其中 DirtyFlag 是一个隐藏字段,如果存在任何未保存的更改,则该字段变为真。我希望将 return 放在函数中可以解决问题,但没有这样的运气。

所以我的问题是,有没有办法使用带有内置返回的 onbeforeunload 标签来绕过它等待该字段的值?或者,(尽管这不太理想)我想我可以在我设置或重置 getElementById 标记的所有位置动态添加或删除 onbeforeunload 标记。不幸的是,我也不知道该怎么做。哦,我完全不能使用 jQuery 或任何其他 javascript 库。

0 投票
1 回答
399 浏览

javascript - OnBeforeUnload 警告,刷新当前页面时除外

有谁知道当 OnBeforeUnload 事件触发时是否可以检查用户要离开的页面。我想在用户实际离开当前页面时通知用户,而不是在他们刚刚重新加载页面时通知他们。

0 投票
3 回答
59 浏览

php - 用户友好的视频审查与锁定

我们有一个 jquery/php/mysql 系统,允许用户登录并查看系统构建的视频以供在线观看。当用户开始查看视频时,该视频会被标记为这样。但是现在我们已经陷入了经典的基于浏览器的应用程序问题,即用户在没有完成审查的情况下离开或关闭浏览器。然后,该视频将进入不断被审查但从未完成,并且永远不会重新进入队列的边缘状态。

我们的选择是:

  • 构建一个服务(我们已经有其他服务)来查找超出持续时间边界的审阅会话并将它们重置回队列中。
  • 当该用户登录时,在持续时间边界之外重置审查会话。基本上,如果用户锁定视频以供审查,它将在下次登录时解锁。
  • 给我的一个建议是使用 php/apache 会话长度,并在到期时重置所有待处理的审核作业。我什至不知道在哪里实现它,因为这是共享服务器上的一个项目,所以它不应该是 apache 配置,但重置机制需要知道数据库凭据才能重置它。 ..
  • 每个人都讨厌的最糟糕的解决方案是阻止用户使用 javascript 导航,询问“你确定吗?!”

这个系统被一些聘请的评论者使用,所以我在这里并不完全与公众打交道,但我不能阻止用户共享登录以加快评论速度,这会淘汰上面的第二个选项,因为它会解锁视频正在由其他人使用相同的登录名进行审核。

0 投票
1 回答
3652 浏览

javascript - 自定义 onbeforeunload 对话框

我有一个 onbeforeunload 事件正在工作,它会弹出一个对话框,警告用户在他们离开时对表单的未保存更改。

如何自定义显示的对话框,使其更加用户友好。现在它相当笨拙:

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

您有未保存的更改。

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

我注意到 Stack Overflow 有一个更清晰的:“您已经开始撰写或编辑帖子”,按钮显示“留在此页面”、“离开此页面”,而不是通用的“取消”和“确定” . 我怎样才能做到这一点?

如果解决方案需要,我正在使用 jQuery。