X-Git-Url: https://git.cyclocoop.org/?a=blobdiff_plain;f=resources%2Fsrc%2Fstartup.js;h=d672d7697b8ccceefaf337e8a6a92f2c44e0e3e9;hb=4334552ecb3aebc31a30cc0ce760e73162b46569;hp=ad06b348767dcba4148198dd9773210d9327c1c7;hpb=8ea7953ab57163a575a2ce02d5dbf862d7c9744a;p=lhc%2Fweb%2Fwiklou.git diff --git a/resources/src/startup.js b/resources/src/startup.js index ad06b34876..d672d7697b 100644 --- a/resources/src/startup.js +++ b/resources/src/startup.js @@ -1,26 +1,23 @@ /** - * Code in this file MUST work on even the most ancient of browsers! + * This file is where we decide whether to initialise the Grade A run-time. * - * This file is where we decide whether to initialise the modern run-time. + * - Beware: This file MUST parse without errors on even the most ancient of browsers! + * - Beware: Do not call mwNow before the isCompatible() check. */ -/* global mw, $VARS, $CODE */ - -var mwPerformance = ( window.performance && performance.mark ) ? performance : { - mark: function () {} - }, - // Define now() here to ensure valid comparison with mediaWikiLoadEnd (T153819). - mwNow = ( function () { - var perf = window.performance, - navStart = perf && perf.timing && perf.timing.navigationStart; - return navStart && typeof perf.now === 'function' ? - function () { return navStart + perf.now(); } : - function () { return Date.now(); }; - }() ), - // eslint-disable-next-line no-unused-vars - mediaWikiLoadStart = mwNow(); - -mwPerformance.mark( 'mwLoadStart' ); +/* global mw, mwPerformance, mwNow, isCompatible, $VARS, $CODE */ + +window.mwPerformance = ( window.performance && performance.mark ) ? performance : { + mark: function () {} +}; +// Define now() here to ensure valid comparison with mediaWikiLoadEnd (T153819). +window.mwNow = ( function () { + var perf = window.performance, + navStart = perf && perf.timing && perf.timing.navigationStart; + return navStart && typeof perf.now === 'function' ? + function () { return navStart + perf.now(); } : + function () { return Date.now(); }; +}() ); /** * See @@ -63,7 +60,7 @@ mwPerformance.mark( 'mwLoadStart' ); * @param {string} [str] User agent, defaults to navigator.userAgent * @return {boolean} User agent is compatible with MediaWiki JS */ -function isCompatible( str ) { +window.isCompatible = function ( str ) { var ua = str || navigator.userAgent; return !!( // http://caniuse.com/#feat=es5 @@ -93,7 +90,7 @@ function isCompatible( str ) { ua.match( /PlayStation/i ) ) ); -} +}; // Conditional script injection ( function () { @@ -153,6 +150,9 @@ function isCompatible( str ) { }; } + window.mediaWikiLoadStart = mwNow(); + mwPerformance.mark( 'mwLoadStart' ); + script = document.createElement( 'script' ); script.src = $VARS.baseModulesUri; script.onload = script.onreadystatechange = function () {