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 相关文章推荐
实现复选框全选/全不选切换
Dec 23 Javascript
Javascript 刷新全集常用代码
Nov 22 Javascript
关于extjs4如何获取grid修改后的数据的问题
Aug 07 Javascript
IE8的JavaScript点击事件(onclick)不兼容的解决方法
Nov 22 Javascript
Jquery在指定DIV加载HTML示例代码
Feb 17 Javascript
在Linux系统中搭建Node.js开发环境的简单步骤讲解
Jan 26 Javascript
JS焦点图,JS 多个页面放多个焦点图的实例
Dec 08 Javascript
javascript数组定义的几种方法
Oct 06 Javascript
Vue中的v-for指令不起效果的解决方法
Sep 27 Javascript
layui实现form表单同时提交数据和文件的代码
Oct 25 Javascript
vue 重塑数组之修改数组指定index的值操作
Aug 09 Javascript
vue祖孙组件之间的数据传递案例
Dec 07 Vue.js
基于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
Windows下的PHP5.0安装配制详解
2006/09/05 PHP
用php将任何格式视频转为flv的代码
2009/09/03 PHP
解析php利用正则表达式解决采集内容排版的问题
2013/06/20 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
js 手机号码合法性验证代码集合
2012/09/29 Javascript
javascript去除字符串左右两端的空格
2015/02/05 Javascript
jquery实现用户打分评分特效
2015/05/28 Javascript
JavaScript中的Math.sin()方法使用详解
2015/06/15 Javascript
jquery在ie7下选择器的问题导致append失效的解决方法
2016/01/10 Javascript
JS实现全屏的四种写法
2016/12/30 Javascript
jQuery实现别踩白块儿网页版小游戏
2017/01/18 Javascript
JS中Attr的用法详解
2017/10/09 Javascript
js获取html页面代码中图片地址的实现代码
2018/03/05 Javascript
boostrap模态框二次弹出清空原有内容的方法
2018/08/10 Javascript
js使用formData实现批量上传
2020/03/27 Javascript
python3设计模式之简单工厂模式
2017/10/17 Python
python中Apriori算法实现讲解
2017/12/10 Python
用Python逐行分析文件方法
2019/01/28 Python
python中pytest收集用例规则与运行指定用例详解
2019/06/27 Python
Python Django切换MySQL数据库实例详解
2019/07/16 Python
Python制作微信好友背景墙教程(附完整代码)
2019/07/17 Python
使用python os模块复制文件到指定文件夹的方法
2019/08/22 Python
python openvc 裁剪、剪切图片 提取图片的行和列
2019/09/19 Python
解决python父线程关闭后子线程不关闭问题
2020/04/25 Python
基于Python爬取搜狐证券股票过程解析
2020/11/18 Python
python 邮件检测工具mmpi的使用
2021/01/04 Python
如何用 Python 处理不平衡数据集
2021/01/04 Python
HTML5逐步分析实现拖放功能的方法
2020/09/30 HTML / CSS
JACK & JONES英国官方网站:欧洲领先的男装生产商
2017/09/27 全球购物
获奖的大学生创业计划书
2014/01/05 职场文书
家长对孩子的评语
2014/04/18 职场文书
初中英语课后反思
2014/04/25 职场文书
个人工作表现评语
2014/04/30 职场文书
2014年教师德育工作总结
2014/11/10 职场文书
java后台调用接口及处理跨域问题的解决
2022/03/24 Java/Android
科学家研发出新型速效酶,可在 24 小时内降解塑料制品
2022/04/29 数码科技