Thanks so much Mike! Got it! :)
Cheers! Alex On Sep 2, 6:33 pm, "Michael Geary" <[EMAIL PROTECTED]> wrote: > No worries on being pedantic, Alex. If I'd been working 24 hours straight, > I'd be worried I might understand a critical detail too. > > Yes, I do mean to have you concatenate all of jquery.js along with the > plugin and your code into a single large .js file, and have your loader.js > create a dynamic script element to load that single file (or a > packed/minified/gzipped version of it). > > No, it won't cause you any problems to concatenate jquery.js along with your > other files. There's nothing special about jquery.js; it's just a .js file > like any other. > > There is one problem you can run into when you concatenate files. If one > source file has a missing semicolon at the very end, then when you append > another file, the JS interpreter may combine statements in a way you didn't > intend. > > This shouldn't be a problem for jquery.js and a typical plugin, but it you > want to be absolutely sure, simply add a ; between each source file. You can > make that part of a separator line if you want, perhaps like this: > > ;//-------------------------------------------------------- > > jquery.js goes here > > ;//-------------------------------------------------------- > > Plugin goes here > > ;//-------------------------------------------------------- > > Your script goes here > > ;//-------------------------------------------------------- > > That way you get a nice visual separation between the scripts, and the extra > semicolons won't hurt anything. > > -Mike > > > From: Alex Weber > > Sent: Tuesday, September 02, 2008 2:07 PM > > To: jQuery (English) > > Subject: [jQuery] Re: best techniques to optimize loading of > > multiple libraries? > > > Thanks again Mike! > > > I reckon I have it down to a 'T' now! :) > > > Just one doubt (sorry i've taken so much of your time already!): > > > When you say: > > "Concatenate all of your scripts into a single file." > > > Do you mean the entire jquery library as well? > > > Is this feasible? Like, copy and paste the entire jquery > > library (uncompressed), one plugin, and my custom code into > > one huge .js file and then pack or minify it? > > And host it somewhere fast like cachefly? > > > I can see doing this for the plugin and my custom js but > > jquery also seems asking for trouble no? > > > Or am i not getting it? Did you mean dynamically append "loader.js" > > in the main document body, and then in loader.js have 3 > > separate <script src>? (wait does that even work?) sorry its > > late here ive been on a crazy reching on 24 hour work bender.... :S > > > Thanks again and sorry for being so pedantic!! > > > Alex > > > On Sep 2, 4:40 pm, "Michael Geary" <[EMAIL PROTECTED]> wrote: > > > > From: Alex Weber > > > > > So just to clear things up, you prefer using document.write() to > > > > insert <script> tags instead of appending the elements to the DOM: > > > > > var finan = document.createElement('script'); > > > > finan.type = 'text/javascript'; > > > > finan.src = > > > > 'http://www.mydomain.com/js/mts_finan.js'; > > > > head.appendChild(finan); > > > > > i guess its more efficient because you don't have to access the > > > > document object, but any other particular reasons? > > > > No, that isn't the reason at all. It's because it makes the > > code much > > > simpler. You don't have to write any code to load the > > scripts in their > > > proper sequence; it happens automatically. <script> tags > > are evaluated > > > in the order they appear in the source code, and code you add with > > > document.write is inserted immediately after the end of the > > script tag > > > that does the document.write. > > > > Dynamically inserting a script element with > > createElement/appendChild > > > is a great technique - in fact it's the basis for the popular JSONP > > > method of cross-domain JSON downloads - but it doesn't > > automatically > > > tell you when the script is loaded. That why your developer > > wrote that > > > repeating interval code > > > - to check when each script is ready and load the next one > > in sequence. > > > > > Awesome, one huge problem out of the way! > > > > Well, maybe, maybe not... :-) See below... > > > > > We're currently at a point where our server isn't exactly being > > > > overloaded so i think its safe to host jquery.min on > > google code and > > > > the plugin (yet to be minified) and custom code possibly > > combined in > > > > 1 file, since there won't be a lot of custom code to begin with. > > > > > Also, to satisfy your curiosity, the whole purpose of using the > > > > mts_load.js function is because this code is a part of a banner > > > > we're planning to distribute and host in numerous > > websites, so a lot > > > > of them won't want scripts other than their own embedded > > directly, > > > > so we found that calling one simple function (mts_load) > > that would > > > > to all the dirty work was acceptable with them :) > > > > When I recommended document.write, I wasn't really thinking > > about the > > > whole context. There may be one good reason to use the > > dynamic script > > > elements instead. When you document.write the script tags, > > the browser > > > will wait while those script files are loaded. If you use dynamic > > > script elements, the browser continues loading the rest of the page > > > while the additional scripts are loaded. The only script it > > waits for > > > is the main loader script which is loaded with a script tag. > > > > If this behavior is what you want, then you can still get > > it without > > > all the timers and extra complication. Concatenate all of > > your scripts > > > (except the loader itself) into a single file. Then simply use a > > > single dynamic script element to load that entire script. You don't > > > need any timers or sequencing that way. Simply load that one big > > > script, and the code in it will run in the order you expect. Very > > > simple, and you still get the benefit of letting the page continue > > > loading while the secondary scripts are fetched asynchronously. > > > > -Mike