If the problem you're having is with stylesheet info not being  
available on ready, the solution is to change the source order in the  
html: make sure that you reference them in the head before you  
reference your scripts.

--Karl

____________
Karl Swedberg
www.englishrules.com
www.learningjquery.com




On Feb 2, 2009, at 6:53 AM, Tom Tom wrote:

> Hello.
> I discovered some time ago that in browsers based on WebKit, the  
> ready not working properly. Looking into the code of jQuery 1.3.1 in  
> binready I noticed it was missing the code. Because it tests only  
> for IE and mozilla. It does not test for Opera, Safari and Chrome.
> I analyzed the version 1.2.6 and the bindready code has changed,  
> result, in opera, safari and chrome, the ready does not work  
> properly (stylesheets are loaded after the page content)
> Could you give me an alternative to not put the code of 1.2.6 in  
> 1.3.1?
>
> Here is the code I changed. The ready work correctly with these  
> changes :
>
> // Figure out what browser is being used
> jQuery.browser = {
>     version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ )  
> || [0,'0'])[1],
>     safari: /webkit/.test( userAgent ),
>     opera: /opera/.test( userAgent ),
>     msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
>     mozilla: /mozilla/.test( userAgent ) && !/(compatible| 
> webkit)/.test( userAgent ),
>     language: navigator.language? navigator.language :  
> navigator.userLanguage,
>     chrome : /chrome/.test(navigator.userAgent.toLowerCase())
> };
>
>
> function bindReady(){
> if ( readyBound ) return;
>         readyBound = true;
>
>         // Mozilla, Opera (see further below for it) and webkit  
> nightlies currently support this event
>         if ( document.addEventListener && !jQuery.browser.opera && ! 
> jQuery.browser.safari && !jQuery.browser.chrome)
>                 // Use the handy event callback
>                 document.addEventListener( "DOMContentLoaded",  
> jQuery.ready, false );
>
>         // If IE is used and is not in a frame
>         // Continually check to see if the document is ready
>         if ( jQuery.browser.msie && window == top ) (function(){
>                 if (jQuery.isReady) return;
>                 try {
>                         // If IE is used, use the trick by Diego  
> Perini
>                         // http://javascript.nwbox.com/ 
> IEContentLoaded/
>                         document.documentElement.doScroll("left");
>                 } catch( error ) {
>                         setTimeout( arguments.callee, 0 );
>                         return;
>                 }
>                 // and execute any waiting functions
>                 jQuery.ready();
>         })();
>
>         if ( jQuery.browser.opera )
>                 document.addEventListener( "DOMContentLoaded",  
> function () {
>                         if (jQuery.isReady) return;
>                         for (var i = 0; i <  
> document.styleSheets.length; i++)
>                                 if  
> (document.styleSheets[i].disabled) {
>                                          
> setTimeout( arguments.callee, 0 );
>                                         return;
>                                 }
>                         // and execute any waiting functions
>                         jQuery.ready();
>                 }, false);
>
>         if ( jQuery.browser.safari || jQuery.browser.chrome) {
>                 var numStyles;
>                 (function(){
>                         if (jQuery.isReady) return;
>                         if ( document.readyState != "loaded" &&  
> document.readyState != "complete" ) {
>                                 setTimeout( arguments.callee, 0 );
>                                 return;
>                         }
>                         if ( numStyles === undefined )
>                                 numStyles = jQuery("style,  
> link[rel=stylesheet]").length;
>                         if ( document.styleSheets.length !=  
> numStyles ) {
>                                 setTimeout( arguments.callee, 0 );
>                                 return;
>                         }
>                         // and execute any waiting functions
>                         jQuery.ready();
>                 })();
>         }
>
>         // A fallback to window.onload, that will always work
>         jQuery.event.add( window, "load", jQuery.ready );
> }
>
> Thank you in advance.
>
>
> Votre correspondant a choisi Hotmail et profite d'un stockage  
> quasiment illimité. Créez un compte Hotmail gratuitement !
> >


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"jQuery Development" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/jquery-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to