使用 jQuery 更改浏览器中的后退按钮功能
Posted
技术标签:
【中文标题】使用 jQuery 更改浏览器中的后退按钮功能【英文标题】:Change back button functionality in browser using jQuery 【发布时间】:2014-03-30 07:32:42 【问题描述】:是否可以在浏览器中更改后退按钮的地址?比如我在这个页面:
http://website.com/page3.php
我提交了一个表单,它返回了这个地址:
http://website.com/page3.php?ok=ok
然后当我转到另一个页面时,例如
http://website.com/blog.html
然后点击后退按钮,它会回到上面有 $_GET 变量的页面。我希望当我点击浏览器的后退按钮到这里时:
http://website.com/page3.php
是否有可能对于(浏览器的)后退按钮,每当我刚从带有变量的特定页面返回时单击它,它也不会获取变量?
【问题讨论】:
可能对你有帮助:bstavroulakis.com/blog/web/overriding-the-browsers-back-button 【参考方案1】:我认为您可以在http://website.com/page3.php 中的表单上设置会话变量。然后在http://website.com/page3.php?ok=ok 提交完成后取消设置。
并且每次加载 url 中带有变量的页面时,立即检查提交会话变量以查看是否从表单页面重定向到页面。如果没有,将您重定向回 page3.page。
我希望我说得够清楚!
【讨论】:
【参考方案2】:这是不可能的,你可以通过使用 pushState 和浏览器历史记录一起破解一些东西
【讨论】:
【参考方案3】:一种方法是使用 AJAX 进行表单发布请求。
另一种方法是将令牌添加到您的表单中,并在服务器端检查它们以使用 header() 进行重定向(如果它们不存在)。 例如:
<?php
session_start();
if(isset($_GET['ok']))
if(isset($_SESSION['form_page3_token']))
$_SESSION['form_page3_token'] = null;
//first request : do your stuff
else
//repost (F5 or Back in the browser => redirect to origin form)
header('Location: http://www.website.com/page3.php');
else
$_SESSION['form_page3_token'] = session_id();
//here the code to show the form
?>
【讨论】:
【参考方案4】:如果用户点击指向您页面的链接,单击“返回”会再次将其从页面中移除,您无法覆盖该行为。
【讨论】:
【参考方案5】:您可以使用 window.location.replace() 更改位置,或者在您的 URL 中实现深度链接(如果它是后哈希路由):
Difference between window.location.href, window.location.replace and window.location.assign
http://en.wikipedia.org/wiki/Deep_linking
干杯,
安德鲁
【讨论】:
以上是关于使用 jQuery 更改浏览器中的后退按钮功能的主要内容,如果未能解决你的问题,请参考以下文章