Hi Diego,

Thanks. Yes, it is in the documentation for ready(). I should have  
linked to it here, as I did on jquery-en where the OP was cross-posted.

http://docs.jquery.com/Events/ready :

> Note: Please make sure that all stylesheets are included before your  
> scripts (especially those that call the ready function). Doing so  
> will make sure that all element properties are correctly defined  
> before jQuery code begins executing. Failure to do this will cause  
> sporadic problems, especially on WebKit-based browsers such as Safari.

--Karl

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




On Feb 2, 2009, at 3:01 PM, Diego Perini wrote:

>
> Karl,
> nice tip, is there a link to this in the documentation for ready() ?
>
> It will not force users to read the documentation but you can answer
> back with a link to the docs.
>
> I see this may pop up frequently for Webkit/Opera users so a small
> description will hopefully cut on the number of hits.
>
>
> Diego
>
>
> On 2 Feb, 14:20, Karl Swedberg <[email protected]> wrote:
>> 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 Swedbergwww.englishrules.comwww.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