That's a good, workable solution! Cheers,
Dan Christof Donat wrote: > > Hi, > >> I'm afraid that I simply don't take Safari users into account. Hardly a >> great thing, but I focus on three browsers: Firefox and IE7, and then >> IE6. >> In that order. The work I do is targetted at corporate users who run >> Windows 2000 and Firefox, and all the JS work I do is for those users. > > Then your solution is almost OK for you. Here is a usable version ;-) > > (function() { > var addScriptCounter = 0; > > function addScript( url, callback ) { > var script = document.createElement( 'script' ); > script.myLoadHandler = callback; > script.id = 'dynamicallyLoadedScript_'+addScriptCounter; > script.type = 'text/javascript'; > script.charset = 'utf-8'; > script.src = url; > > var script2 = document.createElement( 'script' ); > script2.type = 'text/javascript'; > script2.charset = 'utf-8'; > script2.appendChild( > document.createTextNode( > '(function(){'+ > 'document.getElementById(\'dynamicallyLoadedScript_'+ > addScriptCounter+'\').myLoadHandler();})()'; > )); > > var head = document.getElementsByTagName('head')[0]; > head.appendChild( script ); > head.appendChild( script2 ); > > addScriptCounter++; > } > })() > > Usage: > > addScript('jquery.js', function() { > alert('horay, jQuery is available'); > }); > alert('jQuery is not necessarily available here'); > > The second script tag will be evaluated after the first one has been > loaded > and evaluated. At least that works for all browsers I have tested with, > except those Safari versions and very old browsers without a usable DOM > implementation. > > If jQuery cannot be loaded successfully (wrong url e.g.), your callback > will > still be called, and will fail as soon as it tries to access jQuery. > > If you use a XMLHttpRequest, you can distinguish the case when loading was > not > successfull from successfull loading before you really call the callback. > By > the way you also get it working for Safari, but keep out those browsers > without a XMLHttpRequest implementation. For them jsPax falls back to > adding > script tags via DOM. > > That does not work only for the very old browsers without a usable DOM > implementation. There is also a fallback for them in jsPax, but I have not > really tested it, because I don't have such a browser at hand - > theoretically > it should work. > > Christof > > _______________________________________________ > jQuery mailing list > discuss@jquery.com > http://jquery.com/discuss/ > > -- View this message in context: http://www.nabble.com/dynamic-loading-of-jquery.js-into-my-web-page-tf2905089.html#a8167439 Sent from the JQuery mailing list archive at Nabble.com. _______________________________________________ jQuery mailing list discuss@jquery.com http://jquery.com/discuss/