turn some warning message into debug message

This commit is contained in:
Yanzhen Yu
2019-01-30 00:47:41 +08:00
parent 5cc25b0ac1
commit ebd1457ce2
4 changed files with 29 additions and 11 deletions

View File

@@ -215,6 +215,7 @@ The replayer accepts options as its constructor's second parameter, and it has t
| loadTimeout | 0 | timeout of loading remote style sheet | | loadTimeout | 0 | timeout of loading remote style sheet |
| skipInactive | false | whether to skip inactive time | | skipInactive | false | whether to skip inactive time |
| showWarning | true | whether to print warning messages during replay | | showWarning | true | whether to print warning messages during replay |
| showDebug | false | whether to print debug messages during replay |
#### Use rrweb-player #### Use rrweb-player

View File

@@ -130,13 +130,14 @@ replayer.play();
可以通过 `new rrweb.Replayer(events, options)` 的方式向 rrweb 传递回放时的配置参数,具体配置如下: 可以通过 `new rrweb.Replayer(events, options)` 的方式向 rrweb 传递回放时的配置参数,具体配置如下:
| key | 默认值 | 功能 | | key | 默认值 | 功能 |
| ------------ | ------------- | ---------------------------- | | ------------ | ------------- | ------------------------------- |
| speed | 1 | 回放倍速 | | speed | 1 | 回放倍速 |
| root | document.body | 回放时使用的 HTML 元素 | | root | document.body | 回放时使用的 HTML 元素 |
| loadTimeout | 0 | 加载异步样式表的超时时长 | | loadTimeout | 0 | 加载异步样式表的超时时长 |
| skipInactive | false | 是否快速跳过无用户操作的阶段 | | skipInactive | false | 是否快速跳过无用户操作的阶段 |
| showWarning | true | 是否在回放过程中打印警告信息 | | showWarning | true | 是否在回放过程中打印警告信息 |
| showDebug | false | 是否在回放过程中打印 debug 信息 |
#### 使用 rrweb-player #### 使用 rrweb-player

View File

@@ -69,6 +69,7 @@ export class Replayer {
loadTimeout: 0, loadTimeout: 0,
skipInactive: false, skipInactive: false,
showWarning: true, showWarning: true,
showDebug: false,
}; };
this.config = Object.assign({}, defaultConfig, config); this.config = Object.assign({}, defaultConfig, config);
@@ -445,7 +446,7 @@ export class Replayer {
const event = new Event(MouseInteractions[d.type].toLowerCase()); const event = new Event(MouseInteractions[d.type].toLowerCase());
const target = mirror.getNode(d.id); const target = mirror.getNode(d.id);
if (!target) { if (!target) {
return this.warnNodeNotFound(d, d.id); return this.debugNodeNotFound(d, d.id);
} }
switch (d.type) { switch (d.type) {
case MouseInteractions.Blur: case MouseInteractions.Blur:
@@ -490,7 +491,7 @@ export class Replayer {
} }
const target = mirror.getNode(d.id); const target = mirror.getNode(d.id);
if (!target) { if (!target) {
return this.warnNodeNotFound(d, d.id); return this.debugNodeNotFound(d, d.id);
} }
if ((target as Node) === this.iframe.contentDocument) { if ((target as Node) === this.iframe.contentDocument) {
this.iframe.contentWindow!.scrollTo({ this.iframe.contentWindow!.scrollTo({
@@ -529,7 +530,7 @@ export class Replayer {
} }
const target = mirror.getNode(d.id); const target = mirror.getNode(d.id);
if (!target) { if (!target) {
return this.warnNodeNotFound(d, d.id); return this.debugNodeNotFound(d, d.id);
} }
try { try {
((target as Node) as HTMLInputElement).checked = d.isChecked; ((target as Node) as HTMLInputElement).checked = d.isChecked;
@@ -577,7 +578,7 @@ export class Replayer {
this.mouse.style.top = `${y}px`; this.mouse.style.top = `${y}px`;
const target = mirror.getNode(id); const target = mirror.getNode(id);
if (!target) { if (!target) {
return this.warnNodeNotFound(d, id); return this.debugNodeNotFound(d, id);
} }
this.hoverElements((target as Node) as Element); this.hoverElements((target as Node) as Element);
} }
@@ -621,4 +622,18 @@ export class Replayer {
} }
console.warn(REPLAY_CONSOLE_PREFIX, `Node with id '${id}' not found in`, d); console.warn(REPLAY_CONSOLE_PREFIX, `Node with id '${id}' not found in`, d);
} }
private debugNodeNotFound(d: incrementalData, id: number) {
/**
* There may me some valid scenes of node not being found.
* Because DOM events are macrotask and MutationObserver callback
* is microtask, so events fired on a removed DOM may emit
* snapshots in the reverse order.
*/
if (!this.config.showDebug) {
return;
}
// tslint:disable-next-line: no-console
console.log(REPLAY_CONSOLE_PREFIX, `Node with id '${id}' not found in`, d);
}
} }

View File

@@ -231,6 +231,7 @@ export type playerConfig = {
loadTimeout: number; loadTimeout: number;
skipInactive: Boolean; skipInactive: Boolean;
showWarning: Boolean; showWarning: Boolean;
showDebug: Boolean;
}; };
export type playerMetaData = { export type playerMetaData = {