2010-12-20 45 views
4

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

那么有没有一种方法可以判断用户是否使用javascript或PHP命中了后退按钮?

我已经得到了使用隐藏的iframe,只有在IE的解决方案,但我需要的东西,可以为Firefox,Chrome浏览器和Safari如果可能的话。

编辑:我的IE解决方案的工作原理是因为当用户点击后退按钮时,iframe被发回,但父页仍保留在同一位置。从这我可以告诉用户确实击中了后退按钮,因此我使用了历史记录()。这个小黑客在任何其他浏览器中都不起作用(据我所知),所以我正在寻找一个跨浏览器的解决方案。

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

感谢, 里克

+0

什么是射击事件?如果您在用户点击后退按钮时需要保存信息,是否可以将一些信息保存在cookie中或HTML5中有新的“localStorage”和“sessionStorage”对象可供使用。 http://www.w3schools.com/html5/html5_webstorage.asp – ptpaterson 2010-12-20 22:04:14

+1

在IE中工作的解决方案?怎么样?似乎hacky – epascarello 2010-12-20 22:06:32

+3

简单的解决方案:不要试图让人们留在您的网站上。这对用户体验是中断的。也就是说,如果他们离开没有保存的页面或类似的东西,那么确认即可。 – zzzzBov 2010-12-20 22:55:17

回答

3

你不能提前知道哪个网页上他离开你的页面时,你的用户会去。您甚至无法获取当前历史记录中的网址。

我看不出解决您的问题,我怀疑有一个,对不起。

+1

你不能*总是提前知道,但你有时可以有一个不错的主意。例如,链接上的mousedown是一个很好的指示,表示某人将允许在链接上使用鼠标并遵循它。 – thetaiko 2010-12-20 22:06:28

+1

嗯,是的,这很棘手,但是您可以知道用户何时会离开您的网站将功能附加到外部链接的onclick事件上。但是当他没有点击链接时,你无法知道他是否点击后退按钮,关闭浏览器或直接在浏览器中输入新的URL。 – Pikrass 2010-12-20 22:14:49

+0

请参阅上述编辑我的解决方案,以确定用户何时在Internet Explorer中点击后退按钮。我正在寻找另一种方式来指示IE以外的浏览器中的后退按钮。 – Rick 2010-12-22 14:23:34

7

简短的回答:

龙答:

Noooooooooooooooooooooooooooo。

请不要尝试让用户在您的网站,除非你有一个非常充分的理由。保存表单字段将是一个很好用的例子。检查他们是否移动到另一个网站将是一个不好的用途。因为他们在网络的初期那样

人们不从页面到页游为多。相反,他们使用谷歌和社交网络找到有趣的网页,并消耗单独的不同的信息。

0

如果你不需要当用户点击后退按钮时想要发生任何事情,那么你不一定需要确定后退按钮是否已被击中。

你的目标是要确定谁将会“最有可能停留在[你]的网站”,并为大家谁愿意离开一个额外的步骤。你试图打断并重写他的浏览器将如何表现用户的期望。

如果你真的想这样做,有事件侦听所有卸载该通过后退按钮触发事件:你的页面上的每一个环节,关闭窗口等,这将是不容易,你将无法赶上全部事件。但是如果你没有足够的理由去做这件事,那么你会让别人感到厌烦,所以如果它真的很重要,那就付出额外的努力吧。

tl; dr:将事件监听器添加到不是返回按钮并在回调函数中调出对话框。尽管如此,它会让人不高兴。