本文转载自:https://blog.csdn.net/zhouziyu2011/article/details/70673123

今天遇到一个问题
A---------中转页面----------B

中转页面如何知道自己是从A跳过来的还是B跳过来的呢?

答案是:
window.performance.navigation.type

为了得到脚本运行的精确耗时,需要一个高精度时间戳,传统的做法是使用Date对象的getTime方法,其不足之处在于:

1) getTime方法及Date对象的其他方法只能精确到毫秒级别,无法得到更小的时间精度;

2) getTime方法只能获取脚本运行过程中的时间进度,无法知道一些后台事件的时间进度,比如浏览器用了多少时间从服务器加载网页。

为了解决这两个不足之处,ES 5引入高精度时间戳——Performance API。Performance是浏览器对象,精度可以达到1毫秒的千分之一。即1秒的百万分之一,这不仅能衡量程序的细微差别,提高程序的运行速度,还可以获取后台事件的时间进度。

Performance API用于精确度量、控制、增强浏览器的性能表现,使测量网站性能达到前所未有的精度。目前,所有主要浏览器都已经支持performance对象,,包括Chrome 20+、Firefox 15+、IE 10+、Opera 15+。

 

1、performance.timing对象

performance对象的timing属性指向一个对象,它包含了各种与浏览器性能有关的时间数据,提供浏览器处理网页的各个阶段的耗时。

performance.timing对象的属性:

属性

含义

navigationStart

当前浏览器窗口的前一个网页关闭,发生unload事件时的Unix毫秒时间戳。如果没有前一个网页,则等于fetchStart属性。

unloadEventStart

如果前一个网页与当前网页属于同一个域名,则返回前一个网页的unload事件发生时的Unix毫秒时间戳。如果没有前一个网页,或者之前的网页跳转不是在同一个域名内,则返回值为0。

unloadEventEnd

如果前一个网页与当前网页属于同一个域名,则返回前一个网页unload事件的回调函数结束时的Unix毫秒时间戳。如果没有前一个网页,或者之前的网页跳转不是在同一个域名内,则返回值为0。

redirectStart

返回第一个HTTP跳转开始时的Unix毫秒时间戳。如果没有跳转,或者不是同一个域名内部的跳转,则返回值为0。

redirectEnd

返回最后一个HTTP跳转结束时(即跳转回应的最后一个字节接受完成时)的Unix毫秒时间戳。如果没有跳转,或者不是同一个域名内部的跳转,则返回值为0。

fetchStart

返回浏览器准备使用HTTP请求读取文档时的Unix毫秒时间戳。该事件在网页查询本地缓存之前发生。

domainLookupStart

返回域名查询开始时的Unix毫秒时间戳。如果使用持久连接,或者信息是从本地缓存获取的,则返回值等同于fetchStart属性的值。

domainLookupEnd

返回域名查询结束时的Unix毫秒时间戳。如果使用持久连接,或者信息是从本地缓存获取的,则返回值等同于fetchStart属性的值。

connectStart

返回HTTP请求开始向服务器发送时的Unix毫秒时间戳。如果使用持久连接(persistent connection),则返回值等同于fetchStart属性的值。

connectEnd

返回浏览器与服务器之间的连接建立时的Unix毫秒时间戳。如果建立的是持久连接,则返回值等同于fetchStart属性的值。连接建立指的是所有握手和认证过程全部结束。

secureConnectionStart

返回浏览器与服务器开始安全链接的握手时的Unix毫秒时间戳。如果当前网页不要求安全连接,则返回0。

requestStart

返回浏览器向服务器发出HTTP请求时(或开始读取本地缓存时)的Unix毫秒时间戳。

responseStart

返回浏览器从服务器收到(或从本地缓存读取)第一个字节时的Unix毫秒时间戳。

responseEnd

返回浏览器从服务器收到(或从本地缓存读取)最后一个字节时(如果在此之前HTTP连接已经关闭,则返回关闭时)的Unix毫秒时间戳。

domLoading

返回当前网页DOM结构开始解析时(即Document.readyState属性变为loading、相应的readystatechange事件触发时)的Unix毫秒时间戳。

domInteractive

返回当前网页DOM结构结束解析、开始加载内嵌资源时(即Document.readyState属性变为interactive、相应的readystatechange事件触发时)的Unix毫秒时间戳。

domContentLoadedEventStart

返回当前网页DOMContentLoaded事件发生时(即DOM结构解析完毕、所有脚本开始运行时)的Unix毫秒时间戳。

domContentLoadedEventEnd

返回当前网页所有需要执行的脚本执行完成时的Unix毫秒时间戳。

domComplete

返回当前网页DOM结构生成时(即Document.readyState属性变为complete,以及相应的readystatechange事件发生时)的Unix毫秒时间戳。

loadEventStart

返回当前网页load事件的回调函数开始时的Unix毫秒时间戳。如果该事件还没有发生,返回0。

loadEventEnd

返回当前网页load事件的回调函数运行结束时的Unix毫秒时间戳。如果该事件还没有发生,返回0。

 

2、performance.now()

performance.now()方法返回当前网页从performance.timing.navigationStart到当前时间之间的微秒数,其精度可达100万分之一秒。

performance.now()近似等于Date.now(),但前者返回的是毫秒,后者返回的是微秒,后者的精度比前者高1000倍。

 

3、performance.mark()

performance.mark方法用于为相应的视点做标记。

performance.clearMarks方法用于清除标记,如果不加参数,则清除所有标记。

 

4、performance.getEntries()

浏览器获取网页时,会对网页中每一个对象,如js文件、css文件、图片文件等,发出一个HTTP请求。performance.getEntries方法以数组形式,返回这些请求的时间统计信息。

由于performance.getEntries()方法与浏览器处理网页的过程相关,所以只能在浏览器中使用。

 

5、performance.navigation对象

除时间信息,performance还可以提供用户行为信息,主要存放在performance.navigation对象上。

performance.navigation对象有两个属性:

1) performance.navigation.type

返回一个整数值,表示网页的加载来源,可能有以下4种:

① 0:网页通过点击链接、地址栏输入、表单提交、脚本操作等方式加载,相当于常数performance.navigation.TYPE_NAVIGATENEXT。

② 1:网页通过重新加载按钮或location.reload()方法加载,相当于常数performance.navigation.TYPE_RELOAD。

③ 2:网页通过前进或后退按钮加载,相当于常数performance.navigation.TYPE_BACK_FORWARD。

④ 255:任何其他来源的加载,相当于常数performance.navigation.TYPE_UNDEFINED。

2) performance.navigation.redirectCount

该属性表示当前网页经过了多少次重定向跳转。
————————————————
版权声明:本文为CSDN博主「筱葭」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhouziyu2011/article/details/70673123

判断中转页面入口window.performance.navigation.type相关推荐

  1. 使用window.performance对应用性能监测

    window.performance是HTML5 的一个新API. API详细文档传送门:https://developer.mozilla.org/en-US/docs/Web/API/Window ...

  2. 前端性能监控-window.performance

    在同样的网络环境下,有两个同样能满足你的需求的网站,一个唰的一下就加载出来了,另一个白屏转圈转了半天内容才出来,如果让你选择,你会用哪一个? Performance是一个做前端性能监控离不开的API, ...

  3. window.performance详解

    performance的作用 浏览器暴露给js的一个接口,可以通过这个接口查看用户访问网站的连接建立时间.dns时间等信息.使用该api时需要在页面完全加载完成之后才能使用,最简单的办法是在windo ...

  4. window.performance接口

    简单介绍performance中的属性: memory:{ jsHeapSizeLimit: 1136000000 // 内存大小限制 totalJSHeapSize: 16100000 // 可使用 ...

  5. html判断是否在页面,html判断当前页面是否在iframe中的实例

    html判断当前页面是否在iframe中的实例 在做HTML页面的时候,经常会遇到"如果当前页面显示在iframe中,我们就相应的处理" 判断方法为: //判断是否在iframe中 ...

  6. js捕捉IE窗口失去焦点事件,判断离开页面刷新或关闭的方法

    js捕捉IE窗口失去焦点事件,判断离开页面刷新或关闭的方法 javascript如何捕捉IE窗口失去焦点事件 window.onblur = function(e) { //you code }; 弹 ...

  7. 微信中苹果h5页面用window.history.go(-1)返回上一页页面不会重新加载/刷新

    微信中h5页面用window.history.go(-1)返回上一页页面不会重新加载问题问题描述:在实际开发中遇到这样一个问题,业务需求涉及到返回上一页问题,第一时间想到了window.history ...

  8. window.performance

    window.performance定义:是前端性能监控API,可以检测页面中的性能,W3C性能小组引入进来的一个新的API 作用: 1)检测到白屏时间:从我们打开网站到有内容渲染出来的时间点 2)首 ...

  9. jq 自动打开浏览器_jQuery之解析判断当前页面打开端(APP或浏览器)的方法

    本篇文章主要讲述jQuery之解析判断当前页面打开端(APP或浏览器)的方法,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入. 一.代码如下: function check_use ...

最新文章

  1. poj3565(最大权完美匹配)
  2. 超详细解读ORB-SLAM3 单目初始化过程(上篇)
  3. 一位刚刚成功上岸的智能车队员对于参赛经历总结与对比赛的建议
  4. 用Perl发送邮件小例子
  5. php数据表格的重载,layui数据表格实现重载数据表格功能(搜索功能)
  6. JDBC——概述与JDBC的使用
  7. SpringBoot2.1版本的个人应用开发框架 - 集成Druid + MybatisPlus
  8. java添加锁_java – 如何在这种情况下添加锁?
  9. 卡图星小机器人怎么过_安徽交通广播90.8专题报道:阿尔法大蛋机器人,家里的新成员!...
  10. Oracle中奇怪的【不等于号】
  11. FPGA跨时钟域异步时钟设计的几种同步策略
  12. centos7中使用LVM管理磁盘和挂载磁盘
  13. 开发人员必学!java工程师个人简历模板下载
  14. 2016链家大数据楼市半年报
  15. 高一被清华姚班录取,一个重度网瘾少年到理论计算机科学家的蜕变
  16. w7忘记计算机密码,忘记电脑开机密码怎么办windows7_win7电脑忘记开机密码解决方法...
  17. 组合数问题(NOIP2016提高组Day2T1)
  18. Shallow Size 和 Retained Size
  19. 实例讲解PMP相关方参与度评估矩阵
  20. Java实现-跳跃游戏

热门文章

  1. ES5与ES6中如何实现继承
  2. 受微软信任的交叉证书已过期,如何再给内核驱动数字签名
  3. 中英文字符混合处理方法
  4. css 修改三角形大小_css三角形
  5. win32 CreateThread
  6. 腾讯云获ITSS最高等级能力认证 公有云和专有云获双一级
  7. Unity教程||Unity 渐进式光照贴图烘焙详解
  8. edge浏览器去掉搜索时的方框功能
  9. JVM内存限制和调整
  10. 8瓶酒一瓶有毒,用人测试。每次测试结果8小时后才会得出,而你只有8个小时的时间。