JavaScript中document.referrer的用法详解

JavaScript中document.referrer的用法详解

 更新时间:2017年07月04日 08:43:36   作者:璿而不华  
 
这篇文章主要给大家介绍了关于JavaScript中document.referrer的用法,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
 

前言

在JavaScript中,document对象有很多属性,其中有3个与对网页的请求有关的属性,它们分别是URL、domain和referrer。

URL属性包含页面完整的URL,domain属性中只包含页面的域名,而referrer属性中则保存着链接到当前页面的那个页面的URL。

前面两个很好理解,而referrer属性简单来说就是上一个页面的URL。那么这个属性具体有什么用处呢?

在H5页面中,我们经常要在头部加个返回上一个页面按钮,就像下面这样的:


页面头部

点击左侧的元素可以返回到上一个页面,我们可以简单写一段JS代码:

1
2
3
4
var back = document.getElementById('back'); //假设该返回按钮元素id为back
back.onclick = function(){
 history.back(); //返回上一个页面,也可以写成history.go(-1)
};

或者有个更简单的方式,不用写这么多JS,只需直接用a标签表示该返回按钮元素:

1
<a id="back" href="javascript:history.back();" rel="external nofollow" ></a>

咦?上面说了这么多,还是没有说到document.referrer有什么用呀!别急,前面只是铺垫,接下来步入正题~~~

虽说感觉上面这样已经基本上实现了返回上一页的功能,但是有一种情况没有考虑到(我们程序员还是要严谨一点嘛),就是假如该页面是别人分享过来的而不是通过其他页面进入的呢?那么点击该按钮将不会有任何反应,因为此时history对象中不存在历史记录,也就是说这是你浏览器窗口打开时浏览的第一个页面。

 

为了优化用户体验,这里通常有两种解决方案。一种是在打开第一个页面时不显示返回上一页按钮,另一种是点击直接跳转到网站首页,这可以根据产品需求来选择合适的方案。

这里假设选择第一种方案,我们可以这样写段JS:

1
2
3
if(document.referrer){
 back.style.display = 'block'; //默认让其隐藏,当referrer属性不为空时让其显示
}

结束语

其实判断当前页面是否是用户一开始打开的页面,方法也不止通过判断referrer属性这一种方法,还可以通过history.length是否为零来判断。

            var _typeForm = null;
            $(document).ready(function () {
               // var curUrl = document.location.href;//当前url
               // 假设此处为
               var curUrl = "http://jshoptest.manlongdyf.com/product/toPreferentialList?ref=5"//当前url
               console.log(curUrl)
               
                if (/MSIE (d+.d+);/.test(navigator.userAgent) || /MSIE(d+.d+);/.test(navigator.userAgent)) {//IE情况下
                    var referLink = document.createElement('a');
                    referLink.href = curUrl;
                    document.body.appendChild(referLink);
                    console.log(referLink) //创建a链接并赋值
                    //referLink.click();
                } else {
                    //location.href = curUrl;
                }
                //获取Referer从而获得typeForm,
                /* 在JavaScript中,document对象有很多属性,其中有3个与对网页的请求有关的属性,它们分别是URL、domain和referrer。
URL属性包含页面完整的URL,domain属性中只包含页面的域名,而referrer属性中则保存着链接到当前页面的那个页面的URL。 */
                var Referer = document.referrer;
                _typeForm = GetQueryString("typeForm", Referer);
                 console.log(_typeForm);
            })
            
            //获取Referer参数的方法
            function GetQueryString(name, Referer) {
                var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
                var r = Referer.match(reg);
                if (r != null) return unescape(r[2]); return null;
            }

 

相关文章

1.第一步 设置响应头 header(&#39;Access-Control-Allow...
$.inArray()方法介绍 $.inArray()函数用于在数组中搜索指定的...
jquery.serializejson.min.js的妙用 关于这个jquery.seriali...
JS 将form表单数据快速转化为object对象(json对象) jaymou...
jQuery插件之jquery.spinner数字智能增减插件 参考地址:http...