Skip to content

Commit

Permalink
fix: 修复navigation-timing中有值小于0时,不做上报处理,FP和FCP在页面隐藏后不做上报处理
Browse files Browse the repository at this point in the history
  • Loading branch information
Chryseis committed Sep 24, 2021
1 parent e1c1610 commit 8d0280b
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 7 deletions.
5 changes: 4 additions & 1 deletion packages/web-performance/src/metrics/getFCP.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { roundByFour } from '../utils'
import { metricsName } from '../constants'
import metricsStore from '../lib/store'
import observe from '../lib/observe'
import getFirstHiddenTime from '../lib/getFirstHiddenTime'

const getFCP = (): Promise<PerformanceEntry> | undefined => {
if (!isPerformanceObserverSupported()) {
Expand All @@ -23,7 +24,9 @@ const getFCP = (): Promise<PerformanceEntry> | undefined => {
po.disconnect()
}

resolve(entry)
if (entry.startTime < getFirstHiddenTime().timeStamp) {
resolve(entry)
}
}
}

Expand Down
5 changes: 4 additions & 1 deletion packages/web-performance/src/metrics/getFP.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { roundByFour } from '../utils'
import { metricsName } from '../constants'
import metricsStore from '../lib/store'
import observe from '../lib/observe'
import getFirstHiddenTime from '../lib/getFirstHiddenTime'

const getFP = (): Promise<PerformanceEntry> | undefined => {
if (!isPerformanceObserverSupported()) {
Expand All @@ -23,7 +24,9 @@ const getFP = (): Promise<PerformanceEntry> | undefined => {
po.disconnect()
}

resolve(entry)
if (entry.startTime < getFirstHiddenTime().timeStamp) {
resolve(entry)
}
}
}

Expand Down
12 changes: 7 additions & 5 deletions packages/web-performance/src/metrics/getNavigationTiming.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import { isPerformanceSupported, isPerformanceObserverSupported } from '../utils
import { metricsName } from '../constants'
import metricsStore from '../lib/store'
import observe from '../lib/observe'
import { roundByFour } from '../utils'
import { roundByFour, validNumber } from '../utils'

const getNavigationTiming = (): Promise<IPerformanceNavigationTiming> | undefined => {
if (!isPerformanceSupported()) {
Expand Down Expand Up @@ -88,10 +88,12 @@ export const initNavigationTiming = (store: metricsStore, report: IReportHandler
getNavigationTiming()?.then((navigationTiming) => {
const metrics = { name: metricsName.NT, value: navigationTiming } as IMetrics

if (immediately) {
report(metrics)
}
if (validNumber(Object.values(metrics.value))) {
if (immediately) {
report(metrics)
}

store.set(metricsName.NT, metrics)
store.set(metricsName.NT, metrics)
}
})
}
8 changes: 8 additions & 0 deletions packages/web-performance/src/utils/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,11 @@ export const beforeUnload = (callback) => {
export const unload = (callback) => {
window.addEventListener('unload', callback)
}

export const validNumber = (nums: number | Array<number>) => {
if (Array.isArray(nums)) {
return nums.every((n) => n >= 0)
} else {
return nums >= 0
}
}

0 comments on commit 8d0280b

Please sign in to comment.