应用在 window.setTimeout IE7 和 IE8 上不起作用



当我尝试执行以下代码时,它会在IE7和8中抛出错误。

var savedWindowSetTimeout = window.setTimeout;
savedWindowSetTimeout.call(window, function(){}, 0)

引发的错误是

object doesn't support property or method apply

在IE7和IE8中是否有任何解决方法,我可以在window.setTimeout上使用调用或应用?

我找到了问题的答案。你可以用这样一种方式pollyfill window.setTimeout,这样它也可以在较旧的IE浏览器上运行。填充看起来像这样

var __nativeST__ = window.setTimeout;
window.setTimeout = function (vCallback, nDelay /*, argumentToPass1, argumentToPass2, etc. */) {
  var oThis = this, 
      aArgs = Array.prototype.slice.call(arguments, 2);
  return __nativeST__(vCallback instanceof Function ? function () {
    vCallback.apply(oThis, aArgs);
  } : vCallback, nDelay);
};

在MDN网站上找到了这个填充物 https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout

最新更新