OutputPage: Guard jQuery.ready() against absence of jQuery
authorTimo Tijhof <krinklemail@gmail.com>
Tue, 14 May 2013 20:58:18 +0000 (22:58 +0200)
committerTimo Tijhof <krinklemail@gmail.com>
Tue, 14 May 2013 21:09:57 +0000 (23:09 +0200)
We already wrap usage of global "mediaWiki" in a condition
for window.mw (see method
ResourceLoader::makeLoaderConditionalScript) because:
1) The startup module blacklists certain
   browsers in which we won't load jquery+mediawiki.
2) It might have failed to load (for whatever reason).

Adding guard for window.jQuery for the same reasons.

Follows-up Ic3d0c937268d09, which caused a TypeError
'ready of undefined not a function' in browsers where
jquery+mediawiki isn't loaded by the startup module.

Change-Id: I9dcd8d347c6b00efe207d031a480e5b85bf78936

includes/OutputPage.php

index bb4604f..2c9a081 100644 (file)
@@ -2967,7 +2967,7 @@ $templates
                // This also enforces $.isReady to be true at </body> which fixes the
                // mw.loader bug in Firefox with using document.write between </body>
                // and the DOMContentReady event (bug 47457).
-               $html = Html::inlineScript( 'jQuery.ready();' );
+               $html = Html::inlineScript( 'window.jQuery && jQuery.ready();' );
 
                if ( !$wgResourceLoaderExperimentalAsyncLoading ) {
                        $html .= $this->getScriptsForBottomQueue( false );