不适用于window.setTimeout IE7和IE8

时间:2018-04-15 19:10:19

标签: javascript internet-explorer settimeout apply

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

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

抛出的错误是

object doesn't support property or method apply

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

1 个答案:

答案 0 :(得分:0)

我找到了问题的答案。您可以以一种在旧的IE浏览器上运行的方式对window.setTimeout进行pollyfill。 polyfill看起来像这样

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

上找到此polyfill