Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
window.performance.now polyfill
'use strict';
// @license http://opensource.org/licenses/MIT
// copyright Paul Irish 2015
// Added code by Aaron Levine from: https://gist.github.com/Aldlevine/3f716f447322edbb3671
// Some modifications by Joan Alba Maldonado.
// as Safari 6 doesn't have support for NavigationTiming, we use a Date.now() timestamp for relative values
// if you want values similar to what you'd get with real perf.now, place this towards the head of the page
// but in reality, you're just getting the delta between now() calls, so it's not terribly important where it's placed
// Gist: https://gist.github.com/jalbam/cc805ac3cfe14004ecdf323159ecf40e
// TODO: Think about adding vendor prefixes.
if (!Date.now) { Date.now = function() { return new Date().getTime(); } }
(function()
{
if (window.performance && window.performance.now) { return; }
window.performance = window.performance || {};
if
(
window.performance.timing && window.performance.timing.navigationStart &&
window.performance.mark &&
window.performance.clearMarks &&
window.performance.getEntriesByName
)
{
window.performance.now = function()
{
window.performance.clearMarks('__PERFORMANCE_NOW__');
window.performance.mark('__PERFORMANCE_NOW__');
return window.performance.getEntriesByName('__PERFORMANCE_NOW__')[0].startTime;
};
}
else if ("now" in window.performance === false)
{
var nowOffset = Date.now();
if (window.performance.timing && window.performance.timing.navigationStart)
{
nowOffset = window.performance.timing.navigationStart
}
window.performance.now = function now()
{
return Date.now() - nowOffset;
}
}
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.