Skip to content

Commit ac8e31b

Browse files
committed
Merge branch 'release/v2.1.2增加img上传'
2 parents f0929c8 + b04038c commit ac8e31b

File tree

4 files changed

+19
-3
lines changed

4 files changed

+19
-3
lines changed

packages/browser/src/browser-option.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ export class BrowserOptions extends BaseOptions<BrowserOptionsType> {
2626
disabledXhr: boolean;
2727
disabledFetch: boolean;
2828
disabledFirstMeaningPaint: boolean;
29+
useImgUpload: boolean;
2930
configReportXhr: (xhr: XMLHttpRequest, reportData: any)=> void = null;
3031
constructor(options: BrowserOptionsType) {
3132
super();
@@ -57,6 +58,7 @@ export class BrowserOptions extends BaseOptions<BrowserOptionsType> {
5758
disabledXhr,
5859
disabledFetch,
5960
disabledFirstMeaningPaint,
61+
useImgUpload,
6062
configReportXhr
6163
} = options;
6264
this.disabledXhr = disabledXhr || false;
@@ -73,6 +75,7 @@ export class BrowserOptions extends BaseOptions<BrowserOptionsType> {
7375
this.disabledCumulativeLayoutShift = disabledCumulativeLayoutShift || false;
7476
this.disabledNavigation = disabledNavigation || false;
7577
this.disabledResource = disabledResource || false;
78+
this.useImgUpload = useImgUpload || false;
7679
if (configReportXhr && isFunction(configReportXhr)) {
7780
this.configReportXhr = configReportXhr;
7881
}

packages/browser/src/browser-report.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { get_network_info, is_support_send_beacon } from './utils';
77
export class BrowserReport extends BaseReport<BrowserOptionsType> {
88
configReportXhr: unknown = null;
99
timer = null;
10+
useImgUpload = false;
1011
constructor(options:BrowserOptionsType) {
1112
super();
1213
super.bindOptions(options);
@@ -23,12 +24,23 @@ export class BrowserReport extends BaseReport<BrowserOptionsType> {
2324
}
2425
xhr.send(safe_stringify(data));
2526
}
27+
imgRequest(data: ReportBaseInfo | ReportBaseInfo[], url: string): void {
28+
let _img = new Image();
29+
const _spliceStr = url.indexOf('?') === -1 ? '?' : '&';
30+
_img.src = `${url}${_spliceStr}data=${encodeURIComponent(safe_stringify(data))}`;
31+
_img = null;
32+
}
2633
// beacon上报
2734
beaconPost(data: ReportBaseInfo | ReportBaseInfo[], url: string): void {
2835
_global.navigator.sendBeacon.call(window.navigator, url, safe_stringify(data));
2936
}
3037
report(data: ReportBaseInfo | ReportBaseInfo[], url: string) {
31-
const _fn = is_support_send_beacon() ? this.beaconPost : this.post;
38+
let _fn = null;
39+
if (this.useImgUpload) {
40+
_fn = this.imgRequest;
41+
} else {
42+
_fn = is_support_send_beacon() ? this.beaconPost : this.post;
43+
}
3244
if (_global.requestIdleCallback) { // 不阻止进程
3345
_global.requestIdleCallback(async() => {
3446
await _fn(data, url);
@@ -62,6 +74,7 @@ export class BrowserReport extends BaseReport<BrowserOptionsType> {
6274
};
6375
}
6476
bindOptions(options: BrowserOptionsType): void {
77+
this.useImgUpload = options.useImgUpload || false;
6578
if (options.configReportXhr && isFunction(options.configReportXhr)) {
6679
this.configReportXhr = options.configReportXhr;
6780
}

packages/browser/src/index.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,9 @@ function create_browser_instance(options:BrowserOptionsType = {}, plugins: BaseP
4747
}
4848
};
4949
on_beforeunload(_global, _callback); // 当页面关闭前,将剩余所有数据进行上报
50-
return _browserClient;
5150
}
5251
_browserClient.use([..._browserPlugin, ...plugins]);
53-
return;
52+
return _browserClient;
5453
}
5554

5655
const init = create_browser_instance;

packages/browser/src/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ export interface BrowserDisabledOptionsType {
3939
disabledFetch?: boolean; // 是否禁止监控 api
4040
disabledXhr?: boolean; // 是否禁止监控 api
4141
disabledFirstMeaningPaint? : boolean; // 是否禁止监控 首次有效绘制
42+
useImgUpload?:boolean // 是否使用图片上报
4243
}
4344

4445
export type BrowserOptionsType = BaseOptionsType & BrowserOptionsHooksType & BrowserDisabledOptionsType

0 commit comments

Comments
 (0)