有没有办法在登陆我的页面之前找出访问者的先前网址?

时间:2013-06-19 15:53:58

标签: javascript

情况如下:

我正在使用一个将用户从(SITE A)转发到移动版本(SITE B)的网站,如下所示:

<script type="text/javascript">
$(document).ready(function(){
if($(window).width() < 480){
window.location = "http://mysite.com/mobile-version"
}
});
</script>

问题是,我们仍然需要为用户提供从内部(站点B)返回(站点A)的选项,但是当该脚本到位时,它将在用户请求时再次运行脚本(站点A)和返回(SITE B)。

IF / ELSE语句是否可以拉出用户上次访问过的页面/站点并说好...您正在(站点B)访问(站点A),所以不需要重定向?

4 个答案:

答案 0 :(得分:3)

您正在寻找的DOM属性是document.referrer

它返回一个字符串,其中包含用户访问此页面之前所使用的页面。即。

var prevPage = document.referrer;
if (!prevPage.match(/*SITE A*/)){
//Do Something
}

答案 1 :(得分:1)

服务器端会话最适合完整的跨浏览器支持,但如果您想在客户端执行此操作,则如果移动和桌面站点位于同一域中,则可以使用HTML 5 LocalStorage。

在移动网站上,当用户点击以显示桌面版网站时,请在localStorage中存储一个值:

// user wants to go to desktop site
localStorage.setItem("no-mobile-redirect", true);
window.location = 'http://desktopsite';

在桌面网站上:

$(document).ready(function(){
    if($(window).width() < 480){
        var localVar = localStorage.getItem("no-mobile-redirect");

        if(!localVar){ // only redirect if the no-mobile-redirect is not TRUE
            window.location = "http://mysite.com/mobile-version"
        }
    }
});

答案 2 :(得分:1)

Racheet的答案是正确的,尽管如此,依靠这个并不安全。某些Web浏览器可以配置为出于隐私原因而不发送REFERER标头,并且一些防火墙/路由器也会这样做。

最好的办法是,如果不存在查询字符串(或表单)参数,则只执行重定向。例如:

其他替代方案可能涉及使用cookie或localstorage,但您需要考虑用户的客户端不支持这些功能或关闭它们的可能性。

答案 3 :(得分:0)

提供另一种解决方案。 重定向到桌面时,请在URL中使用参数:http://mysite.com?rd=false

$(document).ready(function () {
  if (window.location.indexOf("rd=false" != -1) return;
  if($(window).width() < 480){
    window.location = "http://mysite.com/mobile-version"
  }
});

来考虑一下:一个cookie会更实用......