JavaScript中document.referrer的用法详解


Posted in Javascript onJuly 04, 2017

前言

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

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

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

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

JavaScript中document.referrer的用法详解
页面头部

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

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

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

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

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

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

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

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

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

结束语

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

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
新浪刚打开页面出来的全屏广告代码
Apr 02 Javascript
几款极品的javascript压缩混淆工具
May 16 Javascript
JavaScript之自定义类型
May 04 Javascript
js实现checkbox全选和反选示例
May 01 Javascript
对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解
Apr 11 Javascript
webix+springmvc session超时跳转登录页面
Oct 30 Javascript
canvas 画布在主流浏览器中的尺寸限制详细介绍
Dec 15 Javascript
JS实现的ajax和同源策略(实例讲解)
Dec 01 Javascript
JS中实现隐藏部分姓名或者电话号码的代码
Jul 17 Javascript
提升node.js中使用redis的性能遇到的问题及解决方法
Oct 30 Javascript
JS数组方法join()用法实例分析
Jan 18 Javascript
在vue中使用防抖函数组件操作
Jul 26 Javascript
基于hover的用法实例(推荐)
Jul 04 #Javascript
js学习总结_基于数据类型检测的四种方式(必看)
Jul 04 #Javascript
DataTables添加额外的查询参数和删除columns等无用参数实例
Jul 04 #Javascript
javascript 初学教程及五子棋小程序的简单实现
Jul 04 #Javascript
基于Bootstrap分页的实例讲解(必看篇)
Jul 04 #Javascript
JS全角与半角转化实例(分享)
Jul 04 #Javascript
详解如何提高 webpack 构建 Vue 项目的速度
Jul 03 #Javascript
You might like
php使用gd2绘制基本图形示例(直线、圆、正方形)
2017/02/15 PHP
syntaxhighlighter 使用方法
2007/07/02 Javascript
图片自动缩小 点击放大
2008/07/07 Javascript
JavaScript页面刷新与弹出窗口问题的解决方法
2010/03/02 Javascript
Js 刷新框架页的代码
2010/04/13 Javascript
confirm的用法示例用于按钮操作时确定是否执行
2014/06/19 Javascript
浅谈javascript中this在事件中的应用
2015/02/15 Javascript
JavaScript返回网页中锚点数目的方法
2015/04/03 Javascript
js实现为a标签添加事件的方法(使用闭包循环)
2016/08/02 Javascript
Vue响应式添加、修改数组和对象的值
2017/03/20 Javascript
javascript 的变量、作用域和内存问题
2017/04/19 Javascript
vue-router 中router-view不能渲染的解决方法
2017/05/23 Javascript
AngularJS基于http请求实现下载php生成的excel文件功能示例
2018/01/23 Javascript
简单的三步vuex入门
2018/05/20 Javascript
layui中table表头样式修改方法
2018/08/15 Javascript
vue-router重定向和路由别名的使用讲解
2019/01/19 Javascript
微信小程序-API接口安全详解
2019/07/16 Javascript
js获取本日、本周、本月的时间代码
2020/02/01 Javascript
通过js随机函数Math.random实现乱序
2020/05/19 Javascript
[50:28]LGD女子学院第三期 DOTA2复仇之魂教学
2013/12/24 DOTA
python使用新浪微博api上传图片到微博示例
2014/01/10 Python
python 时间信息“2018-02-04 18:23:35“ 解析成字典形式的结果代码详解
2018/04/19 Python
python检测主机的连通性并记录到文件的实例
2018/06/21 Python
Python使用jsonpath-rw模块处理Json对象操作示例
2018/07/31 Python
Django框架实现分页显示内容的方法详解
2019/05/10 Python
基于python实现雪花算法过程详解
2019/11/16 Python
python 输出列表元素实例(以空格/逗号为分隔符)
2019/12/25 Python
详解pytorch tensor和ndarray转换相关总结
2020/09/03 Python
Python爬虫教程知识点总结
2020/10/19 Python
如何用用Python将地址标记在地图上
2021/02/07 Python
python 获取计算机的网卡信息
2021/02/18 Python
简述数组与指针的区别
2014/01/02 面试题
大学军训感想
2014/02/12 职场文书
公立医院改革实施方案
2014/03/14 职场文书
2015年社区纪检工作总结
2015/04/21 职场文书
通知函的格式
2015/04/27 职场文书