User:Mike Dillon/Scripts/timeOnload.js

// Requires: User:Mike Dillon/Scripts/easydom.js // Requires: User:Mike Dillon/Scripts/toolbox.js

/* */

var onloadFunctTimes = {}; var oldOnloadFuncts; var oldWindowFuncts; var oldRunOnloadHook = window.runOnloadHook; window.runOnloadHook = function { var tf = function (func) { var start = new Date; func; var end = new Date; return { start: start, end:  end, diff: end.getTime - start.getTime };   };

var wrapOnload = function (id, func) { return function { onloadFunctTimes[id] = tf(func); };   };

oldWindowFuncts = {}; var wrapWindowFunct = function (name, alias) { if (!alias) alias = name; oldWindowFuncts[alias] = window[name]; window[name] = wrapOnload(alias, oldWindowFuncts[alias]); };

/*   wrapWindowFunct('histrowinit', 'hri'); wrapWindowFunct('unhidetzbutton', 'uhtb'); wrapWindowFunct('tabbedprefs', 'tp'); wrapWindowFunct('updateTooltipAccessKeys', 'utak'); wrapWindowFunct('akeytt'); wrapWindowFunct('scrollEditBox', 'seb'); wrapWindowFunct('setupCheckboxShiftClick', 'scsc'); wrapWindowFunct('sortableTables', 'st');

oldOnloadFuncts = window.onloadFuncts; window.onloadFuncts = []; for (var i in oldOnloadFuncts) { window.onloadFuncts[i] = wrapOnload(i, oldOnloadFuncts[i]); }   */

var loadTime = tf(oldRunOnloadHook); with (easydom) { var createTooltip = function (lt) { return "Start: " + lt.start.getTime + ", End: " + lt.end.getTime; };

var createOnloadFunctItem = function (id) { return li(               { "title": createTooltip(onloadFunctTimes[id]) },                a({ "href": "#", "onclick": function { if (oldOnloadFuncts[id]) { alert(oldOnloadFuncts[id]); } else if (oldWindowFuncts[id]) { alert(oldWindowFuncts[id]); }                       return false; }               }, id), ": ", onloadFunctTimes[id].diff, " ms"); };

var d = div({ title: createTooltip(loadTime) },           strong('JS load time: '), loadTime.diff + ' ms'); var list = ul; for (var id in onloadFunctTimes) { list.appendChild(createOnloadFunctItem(id)); }       if (list.childNodes.length) { d.appendChild(list); }

addToolboxLink(null, d); } };

/* */