From: Krinkle Date: Thu, 2 Feb 2012 00:47:53 +0000 (+0000) Subject: Enqueue mw.util.init in document-ready even handler earlier X-Git-Tag: 1.31.0-rc.0~24969 X-Git-Url: https://git.cyclocoop.org/%242?a=commitdiff_plain;h=be06bd456043dd20de6e628c6cbf6dc410b42c0d;p=lhc%2Fweb%2Fwiklou.git Enqueue mw.util.init in document-ready even handler earlier * Previously $(document).ready(mw.util.init) was in module 'mediawiki.page.ready' (position: bottom). I've now moved this to 'mediawiki.page.startup' so that it'll be enqueued sooner. * This making it more likely that if someone also enqueues in document-ready that mw.util.init ran before than and thus mw.util.$content populated * Fixes bug 33711 * All this is still depends on the order in which the event handler queue is executed, which is risky. Bug 30713 will bring the solid "watertight" solution --- diff --git a/resources/Resources.php b/resources/Resources.php index 42dfb41c1b..1cdd275aaf 100644 --- a/resources/Resources.php +++ b/resources/Resources.php @@ -726,6 +726,7 @@ return array( 'scripts' => 'resources/mediawiki.page/mediawiki.page.startup.js', 'dependencies' => array( 'jquery.client', + 'mediawiki.util', ), 'position' => 'top', ), diff --git a/resources/mediawiki.page/mediawiki.page.ready.js b/resources/mediawiki.page/mediawiki.page.ready.js index 783db3ef62..370c3a19c2 100644 --- a/resources/mediawiki.page/mediawiki.page.ready.js +++ b/resources/mediawiki.page/mediawiki.page.ready.js @@ -1,8 +1,5 @@ jQuery( document ).ready( function( $ ) { - /* Initialize utilities (messageBoxNew, profile, tooltip access keys, TOC etc.) */ - mw.util.init(); - /* Emulate placeholder if not supported by browser */ if ( !( 'placeholder' in document.createElement( 'input' ) ) ) { $( 'input[placeholder]' ).placeholder(); diff --git a/resources/mediawiki.page/mediawiki.page.startup.js b/resources/mediawiki.page/mediawiki.page.startup.js index d7b9a559f0..a5541ef90a 100644 --- a/resources/mediawiki.page/mediawiki.page.startup.js +++ b/resources/mediawiki.page/mediawiki.page.startup.js @@ -1,4 +1,4 @@ -( function( $ ) { +( function ( $ ) { mw.page = {}; @@ -8,4 +8,11 @@ .addClass('client-js' ) .removeClass( 'client-nojs' ); + // Initialize utilities as soon as the document is ready (mw.util.$content, + // messageBoxNew, profile, tooltip access keys, Table of contents toggle, ..). + // Enqueued into domready from here instead of mediawiki.page.ready to ensure that it gets enqueued + // before other modules hook into document ready, so that mw.util.$content (defined by mw.util.init), + // is defined for them. + $( mw.util.init ); + } )( jQuery );