仅IE不支持setTimeout/setInterval函数的第三个以上参数


Posted in Javascript onMay 25, 2011
setTimeout(function(obj){ 
alert(obj.a); 
}, 2000, {a:1});

即传了第三个参数,第三个参数将作为回调函数的参数obj传入。在非IE浏览器中都弹出了1。这样有个好处,即解决了回调函数的执行上下文,比如要调用某个对象的某个方法,即可以通过参数把该对象传进去。
setTimeout(function(obj){ 
obj.method(); 
}, 2000, obj);

当然,你还可以传多个参数给回调函数,如下
setTimeout(function(a, b){ 
alert(a); 
alert(b); 
}, 2000, 1,2);

这次我们传了两个参数1,2给回调函数,Firefox/Safari/Chrome/Opera中依次弹出了1,2。只要你愿意还可以传更多。

虽然除了IE不支持第三个参数外,但Firefox和Safari/Chrome/Opera之间还是有区别的

setTimeout(function(){ 
alert(arguments.length); 
}, 2000, 1,2);

传了两个参数1,2给回调函数,然后alert出实参的长度
Firefox : 3
Safari/Chrome/Opera : 2
奇怪吧,明明传的是两个参数,但Firefox中弹出的却是3。如果输出第三个参数会发现它是一个数字,有时还是负数。
关:

http://www.w3.org/TR/Window/

https://developer.mozilla.org/en/DOM/window.setTimeout

http://msdn.microsoft.com/en-us/library/ms536753%28v=vs.85%29.aspx 
//解决IE下setTimeout传参数的bug

//解决IE下setTimeout传参数的bug 
if(!+[1,]) { 
(function(overrideFun){ 
window.setTimeout = overrideFun(window.setTimeout); 
window.setInterval = overrideFun(window.setInterval); 
})( 
function(originalFun){ 
return function(code, delay){ 
var args = [].slice.call(arguments, 2); 
return originalFun( 
function(){ 
if (typeof code == 'string') { 
eval(code); 
} 
else { 
code.apply(this, args); 
} 
}, 
delay 
) 
} 
} 
); 
}
Javascript 相关文章推荐
Javascript写了一个清除“logo1_.exe”的杀毒工具(可扫描目录)
Feb 09 Javascript
javascript 数组排序函数
Aug 20 Javascript
js静态方法与实例方法分析
Jul 04 Javascript
JQuery弹出炫丽对话框的同时让背景变灰色
May 22 Javascript
JavaScript中操作字符串之localeCompare()方法的使用
Jun 06 Javascript
js实现的简洁网页滑动tab菜单效果代码
Aug 24 Javascript
ANGULARJS中使用JQUERY分页控件
Sep 16 Javascript
JavaScript基础——使用Canvas绘图
Nov 02 Javascript
jQuery实现腾讯信用界面(自制刻度尺)样式
Aug 15 jQuery
jQuery+ajax读取json数据并按照价格排序示例
Mar 28 jQuery
layui 监听表格复选框选中值的方法
Aug 15 Javascript
vue 兄弟组件的信息传递的方法实例详解
Aug 30 Javascript
IE6/7/8/9不支持exec的简写方式
May 25 #Javascript
25个优雅的jQuery Tooltip插件推荐
May 25 #Javascript
在chrome浏览器中,防止input[text]和textarea在聚焦时出现黄色边框的解决方法
May 24 #Javascript
javascript中String类的subString()方法和slice()方法
May 24 #Javascript
js中关于String对象的replace使用详解
May 24 #Javascript
基于jQuery的让非HTML5浏览器支持placeholder属性的代码
May 24 #Javascript
capacityFixed 基于jquery的类似于新浪微博新消息提示的定位框
May 24 #Javascript
You might like
编写自己的php扩展函数
2006/10/09 PHP
PHP中simplexml_load_string函数使用说明
2011/01/01 PHP
怎样给PHP源代码加密?PHP二进制加密与解密的解决办法
2013/04/22 PHP
php时区转换转换函数
2014/01/07 PHP
PHP中对各种加密算法、Hash算法的速度测试对比代码
2014/07/08 PHP
PHP实现通过中文字符比率来判断垃圾评论的方法
2014/10/20 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
2017/06/07 PHP
Laravel框架分页实现方法分析
2018/06/12 PHP
跨浏览器的设置innerHTML方法
2006/09/18 Javascript
Mootools 1.2教程 函数
2009/09/15 Javascript
Jquery实现仿新浪微博获取文本框能输入的字数代码
2013/02/22 Javascript
判断文件是否正在被使用的JS代码
2013/12/21 Javascript
parentElement,srcElement的使用小结
2014/01/13 Javascript
一个css与js结合的下拉菜单支持主流浏览器
2014/10/08 Javascript
详解Jquery实现ready和bind事件
2016/04/14 Javascript
[原创]Javascript 实现广告后加载 可加载百度谷歌联盟广告
2016/05/11 Javascript
原生js获取iframe中dom元素--父子页面相互获取对方dom元素的方法
2016/08/05 Javascript
使用html+js+css 实现页面轮播图效果(实例讲解)
2017/09/21 Javascript
vue 实现复制内容到粘贴板clipboard的方法
2018/03/17 Javascript
JavaScript中while循环的基础使用教程
2020/08/11 Javascript
js屏蔽F12审查元素,禁止修改页面代码等实现代码
2020/10/02 Javascript
Django项目主urls导入应用中views的红线问题解决
2019/08/10 Python
python字符串格式化方式解析
2019/10/19 Python
python next()和iter()函数原理解析
2020/02/07 Python
浅谈python3打包与拆包在函数的应用详解
2020/05/02 Python
使用Python pip怎么升级pip
2020/08/11 Python
Booking.com荷兰:全球酒店网上预订
2017/08/22 全球购物
GOOD AMERICAN官网:为曲线性感而设计
2017/12/28 全球购物
全球最大的瓷器、水晶和银器零售商:Replacements
2020/06/15 全球购物
机械绘图员岗位职责
2013/11/19 职场文书
施工材料员岗位职责
2014/02/12 职场文书
分公司总经理岗位职责
2014/08/03 职场文书
Pytorch 如何加速Dataloader提升数据读取速度
2021/05/28 Python
原生Javascript+HTML5一步步实现拖拽排序
2021/06/12 Javascript
Python基本数据类型之字符串str
2021/07/21 Python
分享python函数常见关键字
2022/04/26 Python