1 | "use strict";
|
2 |
|
3 | require("core-js/modules/es.array.for-each.js");
|
4 |
|
5 | require("core-js/modules/es.array.from.js");
|
6 |
|
7 | require("core-js/modules/es.array.includes.js");
|
8 |
|
9 | require("core-js/modules/es.string.iterator.js");
|
10 |
|
11 | require("core-js/modules/web.dom-collections.for-each.js");
|
12 |
|
13 | Object.defineProperty(exports, "__esModule", {
|
14 | value: true
|
15 | });
|
16 | exports.simulateDOMContentLoaded = simulateDOMContentLoaded;
|
17 | exports.simulatePageLoad = simulatePageLoad;
|
18 |
|
19 | var _global = require("global");
|
20 |
|
21 |
|
22 | var runScriptTypes = ['application/javascript', 'application/ecmascript', 'application/x-ecmascript', 'application/x-javascript', 'text/ecmascript', 'text/javascript', 'text/javascript1.0', 'text/javascript1.1', 'text/javascript1.2', 'text/javascript1.3', 'text/javascript1.4', 'text/javascript1.5', 'text/jscript', 'text/livescript', 'text/x-ecmascript', 'text/x-javascript'];
|
23 | var SCRIPT = 'script';
|
24 | var SCRIPTS_ROOT_ID = 'scripts-root';
|
25 |
|
26 | function simulateDOMContentLoaded() {
|
27 | var DOMContentLoadedEvent = _global.document.createEvent('Event');
|
28 |
|
29 | DOMContentLoadedEvent.initEvent('DOMContentLoaded', true, true);
|
30 |
|
31 | _global.document.dispatchEvent(DOMContentLoadedEvent);
|
32 | }
|
33 |
|
34 | function insertScript($script, callback, $scriptRoot) {
|
35 | var scriptEl = _global.document.createElement('script');
|
36 |
|
37 | scriptEl.type = 'text/javascript';
|
38 |
|
39 | if ($script.src) {
|
40 | scriptEl.onload = callback;
|
41 | scriptEl.onerror = callback;
|
42 | scriptEl.src = $script.src;
|
43 | } else {
|
44 | scriptEl.textContent = $script.innerText;
|
45 | }
|
46 |
|
47 |
|
48 | if ($scriptRoot) $scriptRoot.appendChild(scriptEl);else _global.document.head.appendChild(scriptEl);
|
49 |
|
50 | $script.parentNode.removeChild($script);
|
51 |
|
52 | if (!$script.src) callback();
|
53 | }
|
54 |
|
55 |
|
56 |
|
57 |
|
58 | function insertScriptsSequentially(scriptsToExecute, callback) {
|
59 | var index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
60 | scriptsToExecute[index](function () {
|
61 | index++;
|
62 |
|
63 | if (index === scriptsToExecute.length) {
|
64 | callback();
|
65 | } else {
|
66 | insertScriptsSequentially(scriptsToExecute, callback, index);
|
67 | }
|
68 | });
|
69 | }
|
70 |
|
71 | function simulatePageLoad($container) {
|
72 | var $scriptsRoot = _global.document.getElementById(SCRIPTS_ROOT_ID);
|
73 |
|
74 | if (!$scriptsRoot) {
|
75 | $scriptsRoot = _global.document.createElement('div');
|
76 | $scriptsRoot.id = SCRIPTS_ROOT_ID;
|
77 |
|
78 | _global.document.body.appendChild($scriptsRoot);
|
79 | } else {
|
80 | $scriptsRoot.innerHTML = '';
|
81 | }
|
82 |
|
83 | var $scripts = Array.from($container.querySelectorAll(SCRIPT));
|
84 |
|
85 | if ($scripts.length) {
|
86 | var scriptsToExecute = [];
|
87 | $scripts.forEach(function ($script) {
|
88 | var typeAttr = $script.getAttribute('type');
|
89 |
|
90 |
|
91 | if (!typeAttr || runScriptTypes.includes(typeAttr)) {
|
92 | scriptsToExecute.push(function (callback) {
|
93 | return insertScript($script, callback, $scriptsRoot);
|
94 | });
|
95 | }
|
96 | });
|
97 |
|
98 |
|
99 | if (scriptsToExecute.length) {
|
100 | insertScriptsSequentially(scriptsToExecute, simulateDOMContentLoaded, undefined);
|
101 | }
|
102 | } else {
|
103 | simulateDOMContentLoaded();
|
104 | }
|
105 | } |
\ | No newline at end of file |