31 lines
932 B
JavaScript
31 lines
932 B
JavaScript
'use strict';
|
|
|
|
/* Whether the browser is Chromium-based with MojoJS enabled */
|
|
const isChromiumBased = 'MojoInterfaceInterceptor' in self;
|
|
/* Whether the browser is WebKit-based with internal test-only API enabled */
|
|
const isWebKitBased = !isChromiumBased && 'internals' in self;
|
|
|
|
/**
|
|
* Loads a script in a window or worker.
|
|
*
|
|
* @param {string} path - A script path
|
|
* @returns {Promise}
|
|
*/
|
|
function loadScript(path) {
|
|
if (typeof document === 'undefined') {
|
|
// Workers (importScripts is synchronous and may throw.)
|
|
importScripts(path);
|
|
return Promise.resolve();
|
|
} else {
|
|
// Window
|
|
const script = document.createElement('script');
|
|
script.src = path;
|
|
script.async = false;
|
|
const p = new Promise((resolve, reject) => {
|
|
script.onload = () => { resolve(); };
|
|
script.onerror = e => { reject(`Error loading ${path}`); };
|
|
})
|
|
document.head.appendChild(script);
|
|
return p;
|
|
}
|
|
}
|