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 相关文章推荐
JS类的封装及实现代码
Dec 02 Javascript
用jquery仿做发微博功能示例
Apr 18 Javascript
JS逆序遍历实现代码
Dec 02 Javascript
JS实现兼容各种浏览器的高级拖动方法完整实例【测试可用】
Jun 21 Javascript
JS查找字符串中出现最多的字符及个数统计
Feb 04 Javascript
微信JS-SDK选取手机照片上传功能
Apr 21 Javascript
JS实现静态页面搜索并高亮显示功能完整示例
Sep 19 Javascript
原生JS实现日历组件的示例代码
Sep 22 Javascript
详解Vue CLI3 多页应用实践和源码设计
Aug 30 Javascript
微信小程序websocket聊天室的实现示例代码
Feb 12 Javascript
ES6新增的数组知识实例小结
May 23 Javascript
Node.js API详解之 vm模块用法实例分析
May 27 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错误提示的关闭方法详解
2013/06/23 PHP
PHP记录搜索引擎蜘蛛访问网站足迹的方法
2015/04/15 PHP
JQUERY操作JSON实例代码
2010/02/09 Javascript
jQuery输入城市查看地图使用介绍
2013/05/08 Javascript
Jquery Ajax解析XML数据(同步及异步调用)简单实例
2014/02/12 Javascript
JavaScript中提前声明变量或函数例子
2014/11/12 Javascript
jQuery获得document和window对象宽度和高度的方法
2015/03/25 Javascript
JavaScript中利用各种循环进行遍历的方式总结
2015/11/10 Javascript
Bootstrap每天必学之按钮(一)
2015/11/24 Javascript
Input文本框随着输入内容多少自动延伸的实现
2017/02/15 Javascript
JS批量替换内容中关键词为超链接
2017/02/20 Javascript
基于bootstrap实现bootstrap中文网巨幕效果
2017/05/02 Javascript
nodejs开发微信小程序实现密码加密
2017/07/11 NodeJs
vscode调试node.js的实现方法
2020/03/22 Javascript
vue cli4.0项目引入typescript的方法
2020/07/17 Javascript
[02:40]2018年度DOTA2最佳新人-完美盛典
2018/12/16 DOTA
使用Python判断IP地址合法性的方法实例
2014/03/13 Python
在Python中操作字典之clear()方法的使用
2015/05/21 Python
Python切片知识解析
2016/03/06 Python
Python 由字符串函数名得到对应的函数(实例讲解)
2017/08/10 Python
python按照多个条件排序的方法
2019/02/08 Python
深度辨析Python的eval()与exec()的方法
2019/03/26 Python
django 单表操作实例详解
2019/07/30 Python
信号生成及DFT的python实现方式
2020/02/25 Python
解决pycharm不能自动补全第三方库的函数和属性问题
2020/03/12 Python
世界首屈一指的钓鱼用品商店:TackleDirect
2016/07/26 全球购物
欧缇丽英国官方网站:Caudalie英国
2016/08/17 全球购物
Tahari ASL官方网站:高级设计师女装
2021/03/15 全球购物
小区门卫工作职责
2013/12/14 职场文书
文明礼貌演讲稿
2014/05/12 职场文书
设计专业毕业生求职信
2014/06/25 职场文书
租房协议书
2014/09/12 职场文书
2014年残疾人工作总结
2014/12/06 职场文书
烈士陵园扫墓感想
2015/08/07 职场文书
Python Pandas知识点之缺失值处理详解
2021/05/11 Python
Python使用protobuf序列化和反序列化的实现
2021/05/19 Python