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