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实现的上传图片及图片大小验证、图片预览效果代码
Apr 12 Javascript
解决jquery submit()提交表单提示:f[s] is not a function
Jan 23 Javascript
非常好用的JsonToString 方法 简单实例
Jul 18 Javascript
js的Boolean对象初始值示例
Mar 04 Javascript
jquery UI Datepicker时间控件的使用方法(加强版)
Nov 07 Javascript
Vue.js 表单校验插件
Aug 14 Javascript
微信开发 微信授权详解
Oct 21 Javascript
JS定时检测任务任务完成后执行下一步的解决办法
Dec 22 Javascript
十大热门的JavaScript框架和库
Mar 21 Javascript
javascript深拷贝、浅拷贝和循环引用深入理解
May 27 Javascript
详解vue-cli 3.0 build包太大导致首屏过长的解决方案
Nov 10 Javascript
vue项目中微信登录的实现操作
Sep 08 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中使用Oracle数据库(6)
2006/10/09 PHP
PHP mkdir()无写权限的问题解决方法
2014/06/19 PHP
PHP实现通过get方式识别用户发送邮件的方法
2015/07/16 PHP
写js时遇到的一些小问题
2010/12/06 Javascript
JS读取cookies信息(记录用户名)
2012/01/10 Javascript
给页面渲染时间加速 干掉Dom Level 0 Event
2012/12/19 Javascript
jquery 添加节点的几种方法介绍
2013/09/04 Javascript
基于jQuery实现页面搜索功能
2020/03/26 Javascript
关于Javascript回调函数的一个妙用
2016/08/29 Javascript
整理一下常见的IE错误
2016/11/18 Javascript
微信小程序request出现400的问题解决办法
2017/05/23 Javascript
阿里大于短信验证码node koa2的实现代码(最新)
2017/09/07 Javascript
Thinkjs3新手入门之添加一个新的页面
2017/12/06 Javascript
原生js封装的ajax方法示例
2018/08/02 Javascript
vue.js实现二级菜单效果
2019/10/19 Javascript
jQuery操作元素的内容和样式完整实例分析
2020/01/10 jQuery
JS函数基本定义与用法示例
2020/01/15 Javascript
解决vue单页面应用进入页面加载所有 js 的问题
2020/08/12 Javascript
[05:13]TI4 中国战队 机场出征!!
2014/07/07 DOTA
利用python打开摄像头及颜色检测方法
2018/08/03 Python
python爬取网易云音乐评论
2018/11/16 Python
对Python中的条件判断、循环以及循环的终止方法详解
2019/02/08 Python
Python常见数据类型转换操作示例
2019/05/08 Python
将Pytorch模型从CPU转换成GPU的实现方法
2019/08/19 Python
python使用Word2Vec进行情感分析解析
2020/07/31 Python
详解python变量与数据类型
2020/08/25 Python
matplotlib 多个图像共用一个colorbar的实现示例
2020/09/10 Python
Stuart Weitzman美国官网:美国奢华鞋履品牌
2016/08/18 全球购物
《中国的气候》教学反思
2014/02/23 职场文书
室内设计专业自荐信
2014/05/31 职场文书
会计岗位职责
2015/02/03 职场文书
2015年社区文体活动总结
2015/03/25 职场文书
同事打架检讨书
2015/05/06 职场文书
爱心捐助活动总结
2015/05/09 职场文书
公文写作:新员工转正申请书范本3篇!
2019/08/07 职场文书
Golang Web 框架Iris安装部署
2022/08/14 Python