Let's say that I have four scripts: init.js, script-1.js, script-2.js
and script-3.js. Only init.js is declared in XHTML file, the other
three scripts are loaded from init.js. The code for each file is as
follows:

init.js
----------------------------------------------------
function loadScript(url) {
  var script = document.createElement('script');
  script.src= url + "?r=" + Math.floor(Math.random()*10000);
  script.setAttribute("charset", "UTF-8")
  document.querySelector('head').appendChild(script);
}
loadScript("script-1.js");
loadScript("script-2.js");
loadScript("script-3.js");

script-1.js:
----------------------------------------------------
console.log("Executing script-1.js");

script-2.js
----------------------------------------------------
console.log("Executing script-2.js");

script-3.js
----------------------------------------------------
console.log("Executing script-3.js");


I'm always getting correct results in Google Chrome, Firefox and Opera:
> Executing script-1.js
> Executing script-2.js
> Executing script-3.js

But for some reason the scripts are loaded in random order by Safari:
> Executing script-3.js
> Executing script-1.js
> Executing script-2.js

It looks like loadScript() function runs asynchronously in Safari and
synchronously in all other browsers. Why? Do you know a more reliable
way for dynamically loading script files? So far I have stumbled upon
RequireJS library, though it seems to be an overkill for my tiny
projects.

-- 
To view archived discussions from the original JSMentors Mailman list: 
http://www.mail-archive.com/[email protected]/

To search via a non-Google archive, visit here: 
http://www.mail-archive.com/[email protected]/

To unsubscribe from this group, send email to
[email protected]

Reply via email to