我有两页。第2页可由第1页访问。
问题是,我想检测是否有人通过返回按钮从第2页返回第1页,以便显示其他内容。
PAGE 1 -------------------------> PAGE
Normale Display Create SESSION or COOKIE
|
|
If SESSION or COOKIE <--------- Pressed back button
-> Secondary Display
所以我试着:
- 创建cookie,但未读取
- 创建会话变量,但是它也没读
- 清空缓存,但我收到了一条警告信息
- 本地存储/会话存储的反应仍然像Cookie
有人能为我找到一个解决方案吗?要么强制阅读其中一件事,要么强制页面在按下后退按钮时表现得像是一种正常的方式?
我对任何解决方案都持开放态度这已经是漫长的两天了。
编辑:
让我们改变一下我的问题:如何使用后退按钮检测页面是否被访问
所以我看到了这个问题,但它是一个旧问题(2009年),是一个使用Iframe的答案,如果我能避免的话,我也会喜欢。
最简单的方法是检查$_SERVER['HTTP_REFERER']
,但如果有人在查看您的网站时打开了多个选项卡,则无法正常工作。
我认为你的问题没有什么"好"的解决办法。
编辑:我想更好的问题是问你具体想实现什么。为什么你需要知道是否有人带着返回按钮从第2页来到第1页?有其他方法可以解决你的问题吗?
我想您可以通过更改本地存储来做到这一点。
初始化第2页时,请检查本地存储的精确存储是否为空。如果没有,请另外显示您想要的内容。
要做到这一点,你必须放置一个控制器,当他被调用时,控制器会这样做,并且不要忘记在加载页面2时调用它。
但是您需要清空该本地存储。因此,每次进入除第二个页面之外的另一个页面时,您可能需要重置它。
它有点脏,但它应该起作用。
注意:使用Angular JS很容易做到这一点。使用纯Javascript可能不那么容易做到,但我非常确信这是可能的。
希望这能有所帮助。
好的,所以解决方案是通过url的历史发送变量。
由于HTML5,您可以修改导航历史。
所以基本上,我的想法是在url中发送值,就像在get请求中一样:
yoursite.com/where_you_are?something=value
为此,您可以使用:history.replaceState({},'',newURL)
修改url历史记录
最后,如果您想将对象发送到您的页面,您可以像使用{myobject: value, ...}
一样使用{}
。
希望这能有所帮助,看看上面链接的mozilla的伟大文档。
最终也会看到