How can I use javascript to determine if an HTMLScriptElement has already been fully loaded?
How to determine if a loaded dynamically loaded script completed loading without using onload or onreadystate change events?
The code is as follows:
TOOL.loadScript = function (url, callback, reappend, deepSearch) { var head, curr, child, tempScript, alreadyAppended, queue, alreadyHandled, script, handler, loadFunc; head = document.getElementsByTagName("head")[0]; tempScript = document.createElement("script"); tempScript.src = url; alreadyAppended = false; queue = []; if (deepSearch) { // search entire document queue.push(document.firstElementChild); } else { // just search the head element queue.push(head); } while (queue.length !== 0) { curr = queue.shift(); // add child nodes to queue child = curr.firstElementChild; if (child !== null && child !== undefined) { queue.push(child); child = child.nextElementSibling; while (child !== null && child !== undefined) { queue.push(child); child = child.nextElementSibling; } } if (curr.tagName !== null && curr.tagName !== undefined) { if (curr.tagName.toLowerCase() === "script" && curr.src === tempScript.src) { script = curr; alreadyAppended = true; break; } } } if (!alreadyAppended) { script = document.createElement("script"); script.type = "text/javascript"; script.async = true; script.src = url; } alreadyHandled = false; handler = function (event) { console.log("handling event..."); if (!alreadyHandled) { if ((!event.readyState) || (event && (event.readyState === "loaded" || event.readyState === "complete"))) { alreadyHandled = true; callback.apply(script, [url]); if (loadFunc) { loadFunc.apply(script, arguments); } } } }; if (script.onreadystatechange === undefined) { loadFunc = script.onload; script.onload = handler; } else { loadFunc = script.onreadystatechange; script.onreadystatechange = handler; }
I need help here. I want the callback function to work even if alreadyAppeneded === true and the same script has already been loaded, but only if this script is fully completed.
if (!alreadyAppended || (alreadyAppended && reappend)) { head.appendChild(script); } };
BOTTOM LINE: How to determine if a download has completed a script? If necessary, ask me questions.
Thanks.
javascript dynamic onload
user562688
source share