From 64fc3bbc1865410f8a768edfb3a3e8a9a9551797 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20B=C3=BCnemann?= Date: Fri, 8 Mar 2019 18:04:28 +0100 Subject: [PATCH] fix(scheduler): fix getNow check in IE9 (#9647) fix #9632 --- src/core/observer/scheduler.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/core/observer/scheduler.js b/src/core/observer/scheduler.js index d78b4d0fee8..1463fc64ad3 100644 --- a/src/core/observer/scheduler.js +++ b/src/core/observer/scheduler.js @@ -47,10 +47,15 @@ let getNow: () => number = Date.now // timestamp can either be hi-res (relative to page load) or low-res // (relative to UNIX epoch), so in order to compare time we have to use the // same timestamp type when saving the flush timestamp. -if (inBrowser && getNow() > document.createEvent('Event').timeStamp) { - // if the low-res timestamp which is bigger than the event timestamp - // (which is evaluated AFTER) it means the event is using a hi-res timestamp, - // and we need to use the hi-res version for event listeners as well. +if ( + inBrowser && + window.performance && + typeof performance.now === 'function' && + getNow() > document.createEvent('Event').timeStamp +) { + // if the event timestamp is bigger than the hi-res timestamp + // (which is evaluated AFTER) it means the event is using a lo-res timestamp, + // and we need to use the lo-res version for event listeners as well. getNow = () => performance.now() }