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 相关文章推荐
Jquery Ajax学习实例4 向WebService发出请求,返回实体对象的异步调用
Mar 16 Javascript
js实现从数组里随机获取元素
Jan 12 Javascript
JS 作用域与作用域链详解
Apr 07 Javascript
jquery实现全选、反选、获得所有选中的checkbox
Sep 13 Javascript
微信小程序 简单DEMO布局,逻辑,样式的练习
Nov 30 Javascript
JavaScript中动态向表格添加数据
Jan 24 Javascript
js实现类bootstrap模态框动画
Feb 07 Javascript
关于Javascript中document.cookie的使用
Mar 08 Javascript
AngularJS之自定义服务详解(factory、service、provider)
Apr 14 Javascript
Vue+webpack+Element 兼容问题总结(小结)
Aug 16 Javascript
vue前后分离调起微信支付
Jul 29 Javascript
Vue element-ui父组件控制子组件的表单校验操作
Jul 17 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
PHP3 safe_mode 失效漏洞
2006/10/09 PHP
php中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题
2011/07/03 PHP
摘自织梦CMS的HTTP文件下载类
2015/08/08 PHP
利用PHP如何统计Nginx日志的User Agent数据
2019/03/06 PHP
彻底搞懂JS无缝滚动代码
2007/01/03 Javascript
超级简单的图片防盗(HTML),好用
2007/04/08 Javascript
js弹出层包含flash 不能关闭隐藏的2种处理方法
2013/06/17 Javascript
在JavaScript里嵌入大量字符串常量的实现方法
2013/07/07 Javascript
jQuery+ajax实现动态执行脚本的方法
2015/01/27 Javascript
JS控制FileUpload的上传文件类型实例代码
2016/10/07 Javascript
纯JS单页面赛车游戏制作代码分享
2017/03/03 Javascript
jquery插件ContextMenu设置右键菜单
2017/03/13 Javascript
antd Upload 文件上传的示例代码
2018/12/14 Javascript
JavaScript时间日期操作实例小结【5个示例】
2018/12/22 Javascript
vue2.0+vue-router构建一个简单的列表页的示例代码
2019/02/13 Javascript
vue+echarts实现可拖动节点的折线图(支持拖动方向和上下限的设置)
2019/04/12 Javascript
MockJs结合json-server模拟后台数据
2020/08/26 Javascript
Vue.js项目实战之多语种网站的功能实现(租车)
2019/08/07 Javascript
jQuery实现二级导航菜单的示例
2020/09/30 jQuery
[01:48]帕吉至宝加入游戏,遗迹战场现“千劫神屠”
2018/04/07 DOTA
python实现比较两段文本不同之处的方法
2015/05/30 Python
Python可变参数用法实例分析
2017/04/02 Python
python中nan与inf转为特定数字方法示例
2017/05/11 Python
基于Python实现的微信好友数据分析
2018/02/26 Python
python 函数中的内置函数及用法详解
2019/07/02 Python
Python3常用内置方法代码实例
2019/11/18 Python
Tensorflow 实现将图像与标签数据转化为tfRecord文件
2020/02/17 Python
解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题
2020/07/13 Python
django跳转页面传参的实现
2020/09/17 Python
css3中flex布局宽度不生效的解决
2020/12/09 HTML / CSS
鲜为人知的HTML5语音合成功能
2019/05/17 HTML / CSS
灵泰克Java笔试题
2016/01/09 面试题
玲玲的画教学反思
2014/02/04 职场文书
教师师德反思材料
2014/02/15 职场文书
2014村书记党建工作汇报材料
2014/11/02 职场文书
学校运动会开幕词
2016/03/03 职场文书