Skip to content

Commit

Permalink
Make Document.js HTML initialization more defensive
Browse files Browse the repository at this point in the history
  • Loading branch information
Avaer Kazmer committed Aug 6, 2019
1 parent fbbb193 commit 2bd896f
Showing 1 changed file with 19 additions and 7 deletions.
26 changes: 19 additions & 7 deletions src/Document.js
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,14 @@ function initDocument (document, window) {
}

process.nextTick(async () => {
const _tryDispatchEvent = (target, event) => {
try {
target.dispatchEvent(event);
} catch(err) {
console.warn(err);
}
};

if (body) {
const bodyChildNodes = body.childNodes;
body.childNodes = new window.NodeList();
Expand All @@ -173,7 +181,11 @@ function initDocument (document, window) {
}

body.childNodes = bodyChildNodes;
body._emit('children', Array.from(bodyChildNodes), [], null, null);
try {
body._emit('children', Array.from(bodyChildNodes), [], null, null);
} catch(err) {
console.warn(err);
}

try {
await GlobalContext._runHtml(document.body, window);
Expand All @@ -182,9 +194,9 @@ function initDocument (document, window) {
}

document.readyState = 'interactive';
document.dispatchEvent(new Event('readystatechange', {target: document}));
_tryDispatchEvent(document, new Event('readystatechange', {target: document}));

document.dispatchEvent(new Event('DOMContentLoaded', {
_tryDispatchEvent(document, new Event('DOMContentLoaded', {
target: document,
bubbles: true,
}));
Expand All @@ -196,19 +208,19 @@ function initDocument (document, window) {
}

document.readyState = 'interactive';
document.dispatchEvent(new Event('readystatechange', {target: document}));
_tryDispatchEvent(document, new Event('readystatechange', {target: document}));

document.dispatchEvent(new Event('DOMContentLoaded', {
_tryDispatchEvent(document, new Event('DOMContentLoaded', {
target: document,
bubbles: true,
}));
}

document.readyState = 'complete';
document.dispatchEvent(new Event('readystatechange', {target: document}));
_tryDispatchEvent(document, new Event('readystatechange', {target: document}));

document.dispatchEvent(new Event('load', {target: document}));
window.dispatchEvent(new Event('load', {target: window}));
_tryDispatchEvent(window, new Event('load', {target: window}));

parentPort.postMessage({
method: 'xrMode',
Expand Down

0 comments on commit 2bd896f

Please sign in to comment.