4

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

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

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

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

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

谢谢,瑞克

4

3 回答 3

7

简短的回答:

不。

长答案:

不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不。

除非您有充分的理由,否则请不要试图让用户留在您的网站上。保存表单字段将是一个很好的使用示例。检查他们是否正在转移到另一个网站将是一个不好的用途。

人们不像在网络早期那样从一个页面到另一个页面旅行。相反,他们使用谷歌和社交网络来寻找有趣的页面,并使用不同的信息。

于 2010-12-21T06:15:47.310 回答
3

您无法提前知道用户离开您的页面时会去哪个页面。您甚至无法获取其当前历史记录中的 URL。

我看不到您的问题的解决方案,我怀疑有一个,抱歉。

于 2010-12-20T22:03:08.120 回答
0

如果您希望用户单击后退按钮时发生任何事情,那么您不一定需要确定是否已点击后退按钮。

您的目标是确定谁将“最有可能留在 [您的] 网站上”,并为每个想要离开的人创造一个额外的步骤。您正试图打断并超越用户对其浏览器行为方式的期望。

如果您真的想这样做,请为所有由后退按钮触发的卸载事件设置事件侦听器:页面上的每个链接、关闭窗口等。这并不容易,而且您也不会能够捕捉到所有事件。但是除非你有充分的理由这样做,否则你会惹恼别人,所以如果这真的很重要,那就加倍努力。

tl; dr:将事件侦听器添加到不是后退按钮的所有内容,并在回调函数中调出对话框。不过,它会激怒人们。

于 2010-12-23T16:22:26.643 回答