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.


_________________________________________________________________
Téléphonez gratuitement à tous vos proches avec Windows Live Messenger  !  
Téléchargez-le maintenant !
http://www.windowslive.fr/messenger/1.asp
--~--~---------~--~----~------------~-------~--~----~
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