/** * @description 浏览器信息 */ export interface INavigator { /** language */ language: string; /** vendor, 浏览器厂商 */ navigatorVendor: string; /** 网络连接类型 */ connectionType: '2g' | '3g' | '4g'; /** 浏览器名称 */ browserName: string; /** 浏览器版本 */ browserVersion: string; /** 浏览器引擎名称 */ engineName: string; /** 浏览器引擎版本 */ engineVersion: string; /** 操作系统名称 */ osName: string; /** 操作系统版本 */ osVersion: string; } /** * @description pv类接口 */ export interface IPv { /** 停留时间 */ stayTime: number; } /** * @description 错误子类型 */ export type IErrorSubType = 'resource' | 'js' | 'async' | 'manual'; /** * @description stackFrame类型 */ export interface StackFrame { constructor(object: StackFrame): StackFrame; isConstructor?: boolean; getIsConstructor(): boolean; setIsConstructor(): void; isEval?: boolean; getIsEval(): boolean; setIsEval(): void; isNative?: boolean; getIsNative(): boolean; setIsNative(): void; isTopLevel?: boolean; getIsTopLevel(): boolean; setIsTopLevel(): void; columnNumber?: number; getColumnNumber(): number; setColumnNumber(): void; lineNumber?: number; getLineNumber(): number; setLineNumber(): void; fileName?: string; getFileName(): string; setFileName(): void; functionName?: string; getFunctionName(): string; setFunctionName(): void; source?: string; getSource(): string; setSource(): void; args?: any[]; getArgs(): any[]; setArgs(): void; evalOrigin?: StackFrame; getEvalOrigin(): StackFrame; setEvalOrigin(): void; toString(): string; } /** * @description 资源加载错误及js错误接口 */ export interface IErrorInfo { /** 子类型 */ subType: IErrorSubType; /** 错误行 */ line?: number; /** 错误列 */ column?: number; /** 错误信息 */ message: string; /** 错误文件 */ filename?: string; /** 错误函数名 */ functionName?: string; /** 错误栈信息 */ stack?: string; /** 错误帧*/ stackFrame?: string; /** 操作录像*/ events?: string; } /** * @description 用户行为子类型 */ export type IUserActivitySubType = 'ui.click' | 'ui.blur' | 'ui.scroll'; /** * @description 用户行为类接口 */ export interface IUserActivity { /** 子类型 */ subType: IUserActivitySubType; /** x轴坐标 */ x?: number; /** y轴坐标 */ y?: number; /** 元素路径 */ path?: string; /** 值 */ value?: string; } export interface IPerformance { navigation: { /** *一个无符号短整型,表示是如何导航到这个页面的。可能的值如下: TYPE_NAVIGATE (0) 当前页面是通过点击链接,书签和表单提交,或者脚本操作,或者在url中直接输入地址,type值为0 TYPE_RELOAD (1) 点击刷新页面按钮或者通过Location.reload()方法显示的页面,type值为1 The page was accessed by clicking the Reload button or via the Location.reload() method. TYPE_BACK_FORWARD (2) 页面通过历史记录和前进后退访问时。type值为2 TYPE_RESERVED (255) 任何其他方式,type值为255 */ type: number; /** 无符号短整型,表示在到达这个页面之前重定向了多少次。 */ redirectCount: number; }; memory?: { /** 上下文内可用堆的最大体积,以字节计算。 */ jsHeapSizeLimit: number; /** 已分配的堆体积,以字节计算。 */ totalJSHeapSize: number; /** 当前 JS 堆活跃段(segment)的体积,以字节计算。 */ usedJSHeapSize: number; }; /** 返回性能测量开始时的时间的高精度时间戳。 */ timeOrigin: number; timing: { /** 是一个无符号long long 型的毫秒数,返回浏览器与服务器之间的连接建立时的Unix毫秒时间戳。如果建立的是持久连接,则返回值等同于fetchStart属性的值。连接建立指的是所有握手和认证过程全部结束。 */ connectEnd: number; /** 是一个无符号long long 型的毫秒数,返回HTTP请求开始向服务器发送时的Unix毫秒时间戳。如果使用持久连接(persistent connection),则返回值等同于fetchStart属性的值 */ connectStart: number; /** 是一个无符号long long 型的毫秒数,返回当前文档解析完成,即Document.readyState 变为 'complete'且相对应的readystatechange (en-US) 被触发时的Unix毫秒时间戳。 */ domComplete: number; /** 是一个无符号long long 型的毫秒数,返回当所有需要立即执行的脚本已经被执行(不论执行顺序)时的Unix毫秒时间戳。 */ domContentLoadedEventEnd: number; /** 是一个无符号long long 型的毫秒数,返回当解析器发送DOMContentLoaded (en-US) 事件,即所有需要被执行的脚本已经被解析时的Unix毫秒时间戳。 */ domContentLoadedEventStart: number; /** 是一个无符号long long 型的毫秒数,返回当前网页DOM结构结束解析、开始加载内嵌资源时(即Document.readyState属性变为“interactive”、 * 相应的readystatechange (en-US)事件触发时)的Unix毫秒时间戳。 */ domInteractive: number; /** 是一个无符号long long 型的毫秒数,返回当前网页DOM结构开始解析时(即Document.readyState属性变为“loading”、相应的 readystatechange (en-US)事件触发时)的Unix毫秒时间戳。 */ domLoading: number; /** 是一个无符号long long 型的毫秒数,表征了域名查询结束的UNIX时间戳。如果使用了持续连接(persistent connection), * 或者这个信息存储到了缓存或者本地资源上,这个值将和 PerformanceTiming.fetchStart一致。 */ domainLookupEnd: number; /** 是一个无符号long long 型的毫秒数,表征了域名查询开始的UNIX时间戳。如果使用了持续连接(persistent connection), * 或者这个信息存储到了缓存或者本地资源上,这个值将和 PerformanceTiming.fetchStart一致。 */ domainLookupStart: number; /** 是一个无符号long long 型的毫秒数,表征了浏览器准备好使用HTTP请求来获取(fetch)文档的UNIX时间戳。这个时间点会在检查任何应用缓存之前。 */ fetchStart: number; /** 是一个无符号long long 型的毫秒数,返回当load (en-US)事件结束,即加载事件完成时的Unix毫秒时间戳。如果这个事件还未被发送,或者尚未完成,它的值将会是0. */ loadEventEnd: number; /** 是一个无符号long long 型的毫秒数,返回该文档下,load (en-US)事件被发送时的Unix毫秒时间戳。如果这个事件还未被发送,它的值将会是0。 */ loadEventStart: number; /** 是一个无符号long long 型的毫秒数,表征了从同一个浏览器上下文的上一个文档卸载(unload)结束时的UNIX时间戳。如果没有上一个文档,这个值会和PerformanceTiming.fetchStart相同 */ navigationStart: number; /** 是一个无符号long long 型的毫秒数,表征了最后一个HTTP重定向完成时(也就是说是HTTP响应的最后一个比特直接被收到的时间)的UNIX时间戳。如果没有重定向,或者重定向中的一个不同源,这个值会返回0. */ redirectEnd: number; /** 是一个无符号long long 型的毫秒数,表征了第一个HTTP重定向开始时的UNIX时间戳。如果没有重定向,或者重定向中的一个不同源,这个值会返回0. */ redirectStart: number; /** 是一个无符号long long 型的毫秒数,返回浏览器向服务器发出HTTP请求时(或开始读取本地缓存时)的Unix毫秒时间戳。 */ requestStart: number; /** 是一个无符号long long 型的毫秒数,返回浏览器从服务器收到(或从本地缓存读取,或从本地资源读取)最后一个字节时(如果在此之前HTTP连接已经关闭,则返回关闭时)的Unix毫秒时间戳。 */ responseEnd: number; /** 是一个无符号long long 型的毫秒数,返回浏览器从服务器收到(或从本地缓存读取)第一个字节时的Unix毫秒时间戳。如果传输层在开始请求之后失败并且连接被重开,该属性将会被数制成新的请求的相对应的发起时间。 */ responseStart: number; /** 是一个无符号long long 型的毫秒数,返回浏览器与服务器开始安全链接的握手时的Unix毫秒时间戳。如果当前网页不要求安全连接,则返回0。 */ secureConnectionStart: number; /** 是一个无符号long long 型的毫秒数,表征了unload (en-US)事件处理完成时的UNIX时间戳。如果没有上一个文档, * or if the previous document, or one of the needed redirects, is not of the same origin, 这个值会返回0. */ unloadEventEnd: number; /** 是一个无符号long long 型的毫秒数,表征了unload (en-US)事件抛出时的UNIX时间戳。如果没有上一个文档, * or if the previous document, or one of the needed redirects, is not of the same origin, 这个值会返回0. */ unloadEventStart: number; }; }