compatibility fixes (#358)

* fix polyfill NodeList forEach

* contentDocument.contains for IE

* polyfill DOMTokenList forEach
This commit is contained in:
jackycoder
2020-09-20 18:55:29 +08:00
committed by GitHub
parent ef84f844ae
commit f8e88ced7b
2 changed files with 14 additions and 1 deletions

View File

@@ -889,7 +889,15 @@ export class Replayer {
return queue.push(mutation);
}
const parentInDocument = this.iframe.contentDocument.contains(parent);
let parentInDocument = null;
if (this.iframe.contentDocument.contains) {
parentInDocument = this.iframe.contentDocument.contains(parent);
} else if (this.iframe.contentDocument.body.contains) {
// fix for IE
// refer 'Internet Explorer notes' at https://developer.mozilla.org/zh-CN/docs/Web/API/Document
parentInDocument = this.iframe.contentDocument.body.contains(parent);
}
if (useVirtualParent && parentInDocument) {
const virtualParent = (document.createDocumentFragment() as unknown) as INode;
mirror.map[mutation.parentId] = virtualParent;

View File

@@ -226,6 +226,11 @@ export function polyfill(win = window) {
win.NodeList.prototype.forEach = (Array.prototype
.forEach as unknown) as NodeList['forEach'];
}
if ('DOMTokenList' in win && !win.DOMTokenList.prototype.forEach) {
win.DOMTokenList.prototype.forEach = (Array.prototype
.forEach as unknown) as DOMTokenList['forEach'];
}
}
export function needCastInSyncMode(event: eventWithTime): boolean {