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/

Reply via email to