最近一次的開發中遇到了IE下setTimeout傳參數的問題,在IE下setTimeout是不會傳參數的,例如下面的代碼,在IE下就不會傳入a,b兩個參數
setTimeout(function(a,b){
alert(a+b);
},1000,'hello,','world!');
在實際項目中我們有些需求必須傳入參數要setTimeout的function進行處理,那么我們就需要利用js的call及其apply的方法,來解決IE下的setTimeout傳參bug:
if(!+[1,]) {
(function(f){
window.setTimeout =f(window.setTimeout);
window.setInterval =f(window.setInterval);
})(function(f){
return function(c,t){
var a=[].slice.call(arguments,2);
return f(function(){
c.apply(this,a)},t)
}
});
}