* 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
'scripts' => 'resources/mediawiki.page/mediawiki.page.startup.js',
'dependencies' => array(
'jquery.client',
+ 'mediawiki.util',
),
'position' => 'top',
),
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();
-( function( $ ) {
+( function ( $ ) {
mw.page = {};
.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 );