Skip to content

Commit 6161079

Browse files
committed
Update build
1 parent b0bb2c4 commit 6161079

File tree

1 file changed

+14
-7
lines changed

1 file changed

+14
-7
lines changed

build/jsroot.js

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,7 @@ function getDocument() {
351351

352352
/** @summary Inject javascript code
353353
* @desc Replacement for eval
354-
* @returns {Promise}
354+
* @returns {Promise} when code is injected
355355
* @private */
356356
function injectCode(code) {
357357
if (nodejs) {
@@ -364,19 +364,26 @@ function injectCode(code) {
364364
fs.writeFileSync(name, code);
365365
return import("file://" + name);
366366
}).finally(() => fs.unlinkSync(name));
367-
} if (typeof document !== 'undefined') {
367+
}
368+
if (typeof document !== 'undefined') {
368369

369370
// check if code already loaded - to avoid duplication
370371
let scripts = document.getElementsByTagName('script');
371372
for (let n = 0; n < scripts.length; ++n)
372373
if (scripts[n].innerHTML == code)
373374
return Promise.resolve(true);
374375

375-
let element = document.createElement("script");
376-
element.setAttribute("type", "text/javascript");
377-
element.innerHTML = code;
378-
document.head.appendChild(element);
379-
return Promise.resolve(true);
376+
let promise = code.indexOf("JSROOT.require") >= 0 ? _ensureJSROOT() : Promise.resolve(true);
377+
378+
return promise.then(() => {
379+
return new Promise(resolve => {
380+
let element = document.createElement("script");
381+
element.setAttribute("type", "text/javascript");
382+
element.innerHTML = code;
383+
document.head.appendChild(element);
384+
setTimeout(() => resolve(true), 10); // while onload event not fired, just postpone resolve
385+
});
386+
});
380387
}
381388

382389
return Promise.resolve(false);

0 commit comments

Comments
 (0)