A really basic fix would be:

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

loadScript("script-1.js", function () {
  loadScript("script-2.js", function () {
    loadScript("script-3.js")
  });
});

(untested but you get the idea)

On 5 March 2011 17:46, Jarek Foksa <[email protected]> wrote:

> 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]
>



-- 
Nick Morgan
http://skilldrick.co.uk
@skilldrick <http://twitter.com/skilldrick>

-- 
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