我正在尝试使用javascript onbeforeunload 事件询问用户是否要退出该页面,但我不希望该事件触发(编辑:“事件”正在弹出的对话框要求用户单击“确定”离开该站点,或者单击“取消”以保留当前页面),如果用户点击后退按钮,则因为他们很可能会留在我的站点上。
那么有没有办法告诉用户是否使用javascript或PHP点击了后退按钮?
我使用隐藏的iframe获得了一个仅适用于IE的解决方案,但如果可能的话,我需要能够适用于Firefox,Chrome和Safari的内容。
编辑:我的IE解决方案有效,因为当用户点击后退按钮时,iframe会被发回,但父页面仍保留在同一位置。从这里我可以看出用户确实点击了后退按钮,所以我然后使用 history.back()。这个小黑客在任何其他浏览器中都不起作用(据我所知),所以我正在寻找跨浏览器的解决方案。tl; dr我正在使用 window.onbeforeunload 弹出一个对话框,询问用户是否要离开我的网站。当用户点击后退按钮时,我不希望弹出这个。 如何判断用户是否点击了浏览器中的后退按钮?
谢谢, 瑞克
答案 0 :(得分:7)
简短回答:
答案很长:
除非您有 非常 充分的理由,否则请不要试图让用户留在您的网站上。保存表单字段将是一个很好用的示例。检查他们是否正在转移到另一个网站将是一个不好的用途。
人们不会像网络早期那样从一页到另一页旅行。相反,他们使用谷歌和社交网络来查找有趣的页面,并使用单独的不同信息。
答案 1 :(得分:3)
您无法事先知道用户离开您的网页时将访问哪个页面。您甚至无法在当前历史记录中获取网址。
我认为你的问题无法解决,我怀疑是否存在问题,抱歉。
答案 2 :(得分:0)
如果您 希望在用户点击后退按钮时发生任何事情,那么您无需确定后退按钮是否已被点击。
您的目标是确定“最有可能留在[您的]网站上的人”,并为每个想要离开的人创建一个额外的步骤。您试图打断并覆盖用户对浏览器行为方式的期望。
如果你真的想这样做,请为后面按钮触发不的所有卸载事件设置事件监听器:页面上的每个链接,关闭窗口等。它赢了“很容易,你将无法捕获所有事件。但除非你有充分的理由这样做,否则你会惹恼别人,所以如果它真的很重要,那就加倍努力吧。
tl; dr:将事件侦听器添加到不是后退按钮的所有内容,并在回调函数中调出对话框。但是,它会让人们生气。