前言

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

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

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

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

页面头部

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

var back = document.getElementById('back'); //假设该返回按钮元素id为back

back.onclick = function(){

history.back(); //返回上一个页面,也可以写成history.go(-1)

};

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

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

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

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

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

if(document.referrer){

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

}

结束语

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

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

java referrer_JavaScript中document.referrer的用法详解相关推荐

  1. el表达式ne什么意思_JSP中EL表达式的用法详解(必看篇)

    EL 全名为Expression Language EL 语法很简单,它最大的特点就是使用上很方便.接下来介绍EL主要的语法结构: ${sessionScope.user.sex} 所有EL都是以${ ...

  2. escape mysql_MySQL中ESCAPE关键字的用法详解

    MySQL转义 转义即表示转义字符原来的语义,一个转义字符的目的是开始一个字符序列,使得转义字符开头的该字符序列具有不同于该字符序列单独出现时的语义. MySQL中,转义字符以"" ...

  3. csh for循环_shell中的for循环用法详解_linux shell

    这篇文章主要介绍了shell中的for循环用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 for 命令: for i i ...

  4. conv2d的输入_pytorch1.0中torch.nn.Conv2d用法详解

    Conv2d的简单使用 torch 包 nn 中 Conv2d 的用法与 tensorflow 中类似,但不完全一样. 在 torch 中,Conv2d 有几个基本的参数,分别是 in_channel ...

  5. 给mysql 授权 命令_mysql中授权命令grant用法详解:

    mysql中授权命令grant用法详解: mysql中可以给你一个用户授予如select,insert,update,delete等其中的一个或者多个权限,主要使用grant命令,用法格式为: gra ...

  6. python中如何反解函数_PyTorch中反卷积的用法详解

    pytorch中的 2D 卷积层 和 2D 反卷积层 函数分别如下: class torch.nn.Conv2d(in_channels, out_channels, kernel_size, str ...

  7. python search用法,Python-re中search()函数的用法详解(查找ip)

    1.首先来看一下search()和find()的区别 import re s1 = "2221155" #search 字符串第一次出现的位置 print(re.search(&q ...

  8. html中iframe标签的用法详解

    <iframe>是什么?html中iframe标签的用法详解 原创  2018-10-26 10:24:35 03690 经常进行页面布局的人对于HTML中的iframe标签一定不 ...

  9. MySQL中ESCAPE关键字的用法详解

    MySQL中ESCAPE关键字的用法详解 MySQL中ESCAPE关键字的用法详解 1. mysql转义概述 2. escape验证 MySQL中ESCAPE关键字的用法详解 1. mysql转义概述 ...

最新文章

  1. python读取遥感 dat_基于python批量处理dat文件及科学计算方法详解
  2. Android 环境配置
  3. 【Python学习笔记】异常处理try-except
  4. 推荐Linux内核书籍
  5. android studio导入eclipse项目各种问题,eclipse项目导入android studio 各类问题及解决方法...
  6. 从0到1,手把手教你如何使用哈工大NLP工具——PyLTP
  7. 1小时学会JQuery
  8. 华为推出鸿蒙超级系统,华为鸿蒙系统正式发布!十个人里竟然只有两个人支持?...
  9. 电脑怎么卸载软件干净_电脑卸载软件怎么卸载?
  10. android studio选中全部,android - Android Studio风格维度已全部处理,未选中一项 - 堆栈内存溢出...
  11. Tomcat的设置3——设置虚拟主机
  12. Django操作views(一)
  13. 列宽一字符等于多少厘米_excel表格换算厘米的方法
  14. 带有风的诗词_2017含有风的诗句大全
  15. HDRP高清渲染管线-学习资料汇总
  16. 亚马逊aws认证是什么?亚马逊aws认证证书含金量怎么样?
  17. 计算机应用 胡丹,正高级
  18. 5.2 BGP水平分割
  19. Mel,Bark以及ERB刻度
  20. 深思数盾助力海康机器人,全新VM4.2乘风破浪,安全起航

热门文章

  1. 【实时数仓】DWS层之商品主题计算、地区主题表(FlinkSQL)
  2. 实验一 第二题 发掉了
  3. 前后端分离之session问题
  4. 赊了一串冰糖葫芦才写出来的小结
  5. No content provider found for permission revoke:
  6. html5 保存文件
  7. cannot import name rgb2gray
  8. IT产品销售人员的压力之二 - IT行业的“小灶”
  9. 教育和帮扶“学困生”
  10. 安卓开发权威指南!含泪狂刷Android基础面试118题,聪明人已经收藏了!