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]