Я создал анимацию, используя requestAnimationFrame
. Отлично работает в Windows Chrome и IE; Safari (проверено Safari 6 и 7) ломается. Оказывается, rAF получает временную метку DOMHighResTimestamp
, а не Date
. Это все прекрасно и хорошо, чего я и ожидал, так как теперь это часть спецификации. Однако, насколько мне удалось найти, нет никакого способа получить текущий DOMHighResTimestamp
(т.е. window.performance
недоступен, даже с префиксом). Таким образом, если я создаю время начала как временную метку Date
, оно ведет себя совершенно неправильно, когда я пытаюсь определить прогресс в обратном вызове rAF (очень маленькие отрицательные числа).
Если вы посмотрите на этот JSBin в Safari, он вообще не будет анимироваться.
В этом JBin я сделал изменение, чтобы "пропустить" первый кадр (где time
параметр равен undefined
), так что startTime
устанавливается на параметр time
в следующем кадре. Кажется, работает, но пропуск кадра кажется немного дрянным.
Есть ли способ получить текущий DOMHighResTimestamp
в Safari, учитывая отсутствие window.performance
? Или, наоборот, принудительно перевести rAF в какой-то устаревший режим, который заставит его вместо этого получать отметку даты и времени?
Кто-нибудь знает, почему в Safari такое несоответствие, когда он предоставляет параметр в формате, который вы не можете получить каким-либо другим способом?