昨天老弟问了一些有关 H5 能力的问题,今天总结一下
1 JS 能获取哪些信息?
1 | 测试页面地址: |
1.1 ua
1 | useragent: |
1.2 屏幕尺寸、浏览器视窗尺寸、页面尺寸
1 | (window.screen.availWidth/availHeight): |
1.3 像素比
1 | 像素比: |
1.4 系统字号、字体
1 | 系统字体: |
1.5 是否为手机浏览器
1 | 是否为手机浏览器: |
1.6 获取地理位置
1 | 通过系统接口获取地理位置(需要用户授权): |
1.7 用户IP
1 | 用户IP: |
1.8 获取网络状态
1 | 网络状态: |
2 JS 监测页面性能
利用 window.performance 属性查看网页加载过程中的各个阶段的耗时
2.1 Navigation Timing API
原始数据:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34navigationStart 浏览器处理当前网页的启动时间:
1545706517172
navigationStart 浏览器发起http请求:
1545706517172
domainLookupStart 域名查询开始:
1545706517181
domainLookupEnd 域名查询结束:
1545706517222
connectStart 开始与服务器建立连接:
1545706517230
connectEnd 与服务器连接建立:
1545706517267
requestStart 浏览器向服务器发出http请求(或开始读取本地缓存):
1545706517267
responseStart 浏览器从服务器(或读取本地缓存)收到第一个字节:
1545706517443
responseEnd 浏览器从服务器收到最后一个字节:
1545706517453
domLoading 浏览器开始解析网页DOM结构:
1545706517453
domInteractive 网页dom树创建完成,开始加载内嵌资源:
1545706517479
domContentLoadedEventStart 网页DOMContentLoaded:
1545706517479
domContentLoadedEventEnd 网页所有需要执行的脚本执行完成,domReady:
1545706517499
domComplete 网页dom结构生成:
1545706517643
loadEventStart 网页load事件的回调函数开始执行:
1545706517643
loadEventEnd 网页load事件的回调函数结束运行:
1545706517643
注: 过早读取 domComplete, loadEventEnd 可能为 0
需要等相应的时机后取值
计算数据(单位:ms):1
2
3
4
5
6
7
8
9
10
11
12DNS寻址时间:
41
TCP连接耗时:
37
首包时间:
271
request请求耗时:
186
解析DOM树结构的时间:
190
页面加载总时间:
471
兼容性:
2.2 Resource Timing
各资源加载耗时(单位:ms):1
2
3
4
5
6
7
8加载http://p0.cdn.qhstatic.com/resources/css/reset.css
DNS寻址时间:0 request请求耗时:0
加载http://p0.cdn.qhstatic.com/api/zepto.js
DNS寻址时间:0 request请求耗时:0
加载http://res.wx.qq.com/open/js/jweixin-1.0.0.js
DNS寻址时间:0 request请求耗时:325
加载http://p0.cdn.qhstatic.com/api/util.js
DNS寻址时间:0 request请求耗时:0
兼容性:
2.3 资源不可访问
如果一个资源不可访问了,能判断是DNS寻址的问题还是资源的问题吗?
自测请求一个403、一个404、一个500的地址以及一个不存在的域名
都没有进入 performance entries,只以说明资源加载出错,不能判断到底是什么问题
3. webp兼容性
4. m3u8兼容性
5. 是否可获得系统 uuid
否