read __rrMutationObserver from window
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -9,3 +9,5 @@ es
|
|||||||
lib
|
lib
|
||||||
|
|
||||||
temp
|
temp
|
||||||
|
|
||||||
|
*.log
|
||||||
|
|||||||
@@ -62,6 +62,6 @@
|
|||||||
"@xstate/fsm": "^1.4.0",
|
"@xstate/fsm": "^1.4.0",
|
||||||
"fflate": "^0.4.4",
|
"fflate": "^0.4.4",
|
||||||
"mitt": "^1.1.3",
|
"mitt": "^1.1.3",
|
||||||
"rrweb-snapshot": "^1.0.3"
|
"rrweb-snapshot": "^1.0.4"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -112,6 +112,7 @@ function isINode(n: Node | INode): n is INode {
|
|||||||
*/
|
*/
|
||||||
export default class MutationBuffer {
|
export default class MutationBuffer {
|
||||||
private frozen: boolean = false;
|
private frozen: boolean = false;
|
||||||
|
private locked: boolean = false;
|
||||||
|
|
||||||
private texts: textCursor[] = [];
|
private texts: textCursor[] = [];
|
||||||
private attributes: attributeCursor[] = [];
|
private attributes: attributeCursor[] = [];
|
||||||
@@ -195,7 +196,6 @@ export default class MutationBuffer {
|
|||||||
};
|
};
|
||||||
|
|
||||||
public emit = () => {
|
public emit = () => {
|
||||||
|
|
||||||
if (this.frozen || this.locked) {
|
if (this.frozen || this.locked) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,6 +44,9 @@ import {
|
|||||||
import MutationBuffer from './mutation';
|
import MutationBuffer from './mutation';
|
||||||
import { stringify } from './stringify';
|
import { stringify } from './stringify';
|
||||||
|
|
||||||
|
type WindowWithStoredMutationObserver = Window & {
|
||||||
|
__rrMutationObserver?: MutationObserver;
|
||||||
|
};
|
||||||
type WindowWithAngularZone = Window & {
|
type WindowWithAngularZone = Window & {
|
||||||
Zone?: {
|
Zone?: {
|
||||||
__symbol__?: (key: string) => string;
|
__symbol__?: (key: string) => string;
|
||||||
@@ -71,7 +74,17 @@ function initMutationObserver(
|
|||||||
recordCanvas,
|
recordCanvas,
|
||||||
slimDOMOptions,
|
slimDOMOptions,
|
||||||
);
|
);
|
||||||
let mutationBufferCtor = window.MutationObserver;
|
let mutationBufferCtor =
|
||||||
|
window.MutationObserver ||
|
||||||
|
/**
|
||||||
|
* Some websites may disable MutationObserver by removing it from the window object.
|
||||||
|
* If someone is using rrweb to build a browser extention or things like it, they
|
||||||
|
* could not change the website's code but can have an opportunity to inject some
|
||||||
|
* code before the website executing its JS logic.
|
||||||
|
* Then they can do this to store the native MutationObserver:
|
||||||
|
* window.__rrMutationObserver = MutationObserver
|
||||||
|
*/
|
||||||
|
(window as WindowWithStoredMutationObserver).__rrMutationObserver;
|
||||||
const angularZoneSymbol = (window as WindowWithAngularZone)?.Zone?.__symbol__?.(
|
const angularZoneSymbol = (window as WindowWithAngularZone)?.Zone?.__symbol__?.(
|
||||||
'MutationObserver',
|
'MutationObserver',
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -2749,10 +2749,10 @@ rollup@^2.3.3:
|
|||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
fsevents "~2.1.2"
|
fsevents "~2.1.2"
|
||||||
|
|
||||||
rrweb-snapshot@^1.0.1:
|
rrweb-snapshot@^1.0.4:
|
||||||
version "1.0.2"
|
version "1.0.4"
|
||||||
resolved "https://registry.npmjs.org/rrweb-snapshot/-/rrweb-snapshot-1.0.2.tgz#0338c9e00e24e86f8efb56cbdb293def7287f53c"
|
resolved "https://registry.yarnpkg.com/rrweb-snapshot/-/rrweb-snapshot-1.0.4.tgz#608acf0f066e4f72213109ee6bfe25d291e7eb0b"
|
||||||
integrity sha512-QtWwK9fqNLn1wn7nupyy/BcTnMfl8rrtG6uQ0pC3xeXskVQ9GXuh/ulEpuzyVIVPszF/AvT4DjfWmwC5K6xusA==
|
integrity sha512-I9oeK+LPeFE8N8MT011gBLEb+3VjnU3TJNHphzqDu5XJLna8bvMx9tkTiyD9MOlVCX80Le/MwSBxoJMpCX9uQA==
|
||||||
|
|
||||||
run-async@^2.2.0:
|
run-async@^2.2.0:
|
||||||
version "2.4.1"
|
version "2.4.1"
|
||||||
|
|||||||
Reference in New Issue
Block a user