当我尝试执行以下代码时,它会在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