使用查询字符串重定向后循环返回按钮

时间:2014-03-06 07:36:01

标签: javascript jquery query-string browser-history

问题:

我需要从包含第二页网址http://www.firstURL.com/?http://www.secondURL.com的查询字符串的网址开始。在第一个URL的目标页面上,解析查询字符串以提取第二个URL,并将浏览器重定向到第二个URL。这是在$(document).ready上完成的,因此它是自动的。这一切都运行正常,但如果用户点击第二个URL上的后退按钮,当然会陷入漏洞。这是基本代码:

$(document).ready(function() {
    var s = location.search;
    if(s != '') {
        var split = s.split('?');
        var loc = split[1].replace('?', '');
        location.href = '' + loc + '';
    } else {
        //do something else on the target page..
    }
});

我已经尝试创建一个条件案例,如果引用者是第二个URL(上面代码中的loc),则重定向不会执行,但似乎是在重新指示,后退按钮不会返回推荐人。

我必须做所有这个客户端 - 我无法访问服务器。

有没有办法防止后退按钮点击时重定向触发?感谢。

2 个答案:

答案 0 :(得分:0)

点击第二页后,在浏览器中设置一个cookie,表示已访问过第二页。 在第一页中,在进行重定向之前,请始终检查cookie是否不存在。

关于设置cookie的说明:

<script type="text/javascript">
document.cookie="secondpagevisited=43yj0u3jt;path=/"; //execute this line in the head of second page.
</script>

在第一页中,检查cookie存在:

<script type="text/javascript">
if(document.cookie.indexOf("secondpagevisited=43yj0u3jt")==-1){
    /*do redirection here*/
}
</script>

编辑:假设您只控制第一页而不是第二页,请尝试:

<script type="text/javascript">
if(document.cookie.indexOf("secondpagevisited=43yj0u3jt")==-1){
    document.cookie="secondpagevisited=43yj0u3jt;path=/";
    /*do redirection here*/
}
</script>

答案 1 :(得分:0)

我给了Ashish让我走上正确轨道的重点,但这是我的解决方案更进了一步:

 var s = location.search;
     if(s != '') {
        var split = s.split('?');
         var loc = split[1].replace('?', '');
          if (document.cookie.indexOf('redirected=' + loc + '') == -1) {
             document.cookie = 'redirected=' + loc + '';
             location.href = '' + loc + '';
         } else {
         var url = location.href.replace('' + s + '', '');
         document.cookie = 'redirected=; expires=Thu, 01 Jan 1970 00:00:00 GMT';
         history.pushState(null, null, '' + url  + '');
        }

如果cookie在那里,则不会发生重定向,将删除cookie(如果用户返回到具有原始链接并再次单击它的站点),则通过删除来整理URL查询字符串。

感谢您的指导。