Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查用户是否点击浏览器中的“后退”按钮_Php_Javascript_Onbeforeunload - Fatal编程技术网

Php 检查用户是否点击浏览器中的“后退”按钮

Php 检查用户是否点击浏览器中的“后退”按钮,php,javascript,onbeforeunload,Php,Javascript,Onbeforeunload,我试图使用javascript onbeforeunload事件询问用户是否要退出页面,但我不希望触发该事件(编辑:“事件”是弹出的对话框,要求用户单击“确定”离开站点或单击“取消”停留在当前页面)如果用户点击后退按钮,因为他们很可能会留在我的网站上 那么,有没有一种方法可以判断用户是否使用javascript或PHP点击了后退按钮 我已经得到了一个使用隐藏iframe的解决方案,它只在IE中工作,但如果可能的话,我需要一些可以在Firefox、Chrome和Safari上工作的东西 编辑:我的

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

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

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

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

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

谢谢,
Rick

当用户离开您的页面时,您无法预先知道他将进入哪个页面。您甚至无法在其当前历史记录中获取URL

我看不出你的问题有什么解决办法,我怀疑有什么办法,对不起。

简短回答:

不 长答覆:

不,不。 请不要试图让用户留在您的网站上,除非您有很好的理由这样做。保存表单字段就是一个很好的例子。检查他们是否转移到另一个网站将是一个坏用途

人们不像在网络早期那样频繁地从一个页面浏览到另一个页面。相反,他们使用谷歌和社交网络查找感兴趣的页面,并使用不同的信息片段。

如果你不想在用户单击后退按钮时发生任何事情,那么你不必确定是否按下了后退按钮

你的目标是确定谁“最有可能留在[你的]网站”,并为每个想离开的人创造一个额外的步骤。您试图中断并覆盖用户对其浏览器行为的期望

如果您真的想这样做,请为所有非“后退”按钮触发的卸载事件设置事件侦听器:页面上的每个链接、关闭窗口等。这并不容易,而且您也无法捕获所有事件。但除非你有很好的理由这样做,否则你会让别人生气,所以如果这真的很重要,那么就投入额外的努力


tl;dr:将事件监听器添加到不是“后退”按钮的所有内容中,并在回调函数中打开对话框。不过,这会让人恼火。

什么是正在发生的事件?如果你需要在用户点击后退按钮时保存信息,你不能在cookie中保存一些信息,或者HTML5有新的“localStorage”和“sessionStorage”对象要使用。在IE中有效的解决方案?怎样似乎是一个简单的解决方案:不要试图让人们留在你的网站上。这会中断用户体验。也就是说,如果他们正在离开一个尚未保存的页面或类似的页面,可以得到确认。好吧,你可以查看
历史记录。长度
,但你不知道用户是否单击后退或前进进入你的页面。你不能总是提前知道,但有时你会有一个非常好的主意。例如,链接上的鼠标向下移动是一个很好的迹象,表明有人将允许鼠标在链接上移动并跟随它。是的,这很棘手,但你可以知道用户何时离开你的网站,例如将一个功能附加到外部链接的onclick事件。但是,当他没有单击链接时,您无法知道他是点击后退按钮、关闭浏览器还是直接在浏览器中输入新URL。有关确定用户何时在Internet Explorer中点击后退按钮的解决方案,请参阅上面的编辑。我正在寻找另一种方式来表示在IE以外的浏览器中点击后退按钮。