繁体   English   中英

使用jQuery更改浏览器中的后退按钮功能

[英]Change back button functionality in browser using jQuery

是否可以在浏览器中更改后退按钮的地址? 例如,我在此页面中:

http://website.com/page3.php

我提交了一个表格,它返回了这个地址:

http://website.com/page3.php?ok=ok

之后,例如当我转到另一个页面时

http://website.com/blog.html

然后单击“后退”按钮,它返回到带有$ _GET变量的页面。我希望当我单击浏览器的“后退”按钮转到此处时:

http://website.com/page3.php

浏览器的后退按钮是否有可能每次我刚从带有变量的特定页面进入时都单击它,它也不会获得变量?

我认为您可以在http://website.com/page3.php的表单上设置会话变量。 然后在http://website.com/page3.php?ok=ok完成提交后将其取消设置。

每次加载url中包含变量的页面时,请立即检查提交会话变量,以查看是否从表单页面重定向到该页面。 如果没有,则将您重定向回page3.page。

我希望我已经足够清楚了!

您不可能通过使用pushState并浏览器历史记录一起破解某些东西

一种方法是使用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
    }
?>

您无法覆盖以下行为:如果用户点击了指向您页面的链接,则单击“上一步”将再次使他们离开。

您可以使用window.location.replace()更改位置,或者如果它是哈希后路由,则可以在您的URL中实现深层链接:

window.location.href,window.location.replace和window.location.assign之间的区别

http://en.wikipedia.org/wiki/Deep_linking

干杯,

安德鲁

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM