RequestAnimationFrame在Safari angular 4中不可用

问题描述 投票:0回答:1

因为我在角4项目中使用材料设计。该项目未在safari中加载为抛出错误 - RequestAnimationFrame。

怎么解决这个?

angular animation
1个回答
0
投票

您可以使用polyfillsafari中使用它。这是代码片段。

// requestAnimationFrame polyfill by @rma4ok
!function (window) {
  var
      equestAnimationFrame = 'equestAnimationFrame',
      requestAnimationFrame = 'r' + equestAnimationFrame,

      ancelAnimationFrame = 'ancelAnimationFrame',
      cancelAnimationFrame = 'c' + ancelAnimationFrame,

      expectedTime = 0,
      vendors = ['moz', 'ms', 'o', 'webkit'],
      vendor;

  while (!window[requestAnimationFrame] && (vendor = vendors.pop())) {
    window[requestAnimationFrame] = window[vendor + 'R' + equestAnimationFrame];
    window[cancelAnimationFrame] =
        window[vendor + 'C' + ancelAnimationFrame] ||
            window[vendor + 'CancelR' + equestAnimationFrame];
  }

  if (!window[requestAnimationFrame]) {
    window[requestAnimationFrame] = function (callback) {
      var
          currentTime = +new Date,
          adjustedDelay = 16 - (currentTime - expectedTime),
          delay = adjustedDelay > 0 ? adjustedDelay : 0;

      expectedTime = currentTime + delay;

      return setTimeout(function () {
        callback(expectedTime);
      }, delay);
    };

    window[cancelAnimationFrame] = clearTimeout;
  }
}(this);
© www.soinside.com 2019 - 2024. All rights reserved.