仅IE不支持setTimeout/setInterval函数的第三个以上参数
2011-05-18 17:56
615 查看
setTimeout/setInterval,这两个函数相信前端开发同学都很熟悉。它们在非IE(6-9)浏览器中还可以如下使用
即传了第三个参数,第三个参数将作为回调函数的参数obj传入。在非IE浏览器中都弹出了1。这样有个好处,即解决了回调函数的执行上下文,比如要调用某个对象的某个方法,即可以通过参数把该对象传进去。
当然,你还可以传多个参数给回调函数,如下
这次我们传了两个参数1,2给回调函数,Firefox/Safari/Chrome/Opera中依次弹出了1,2。只要你愿意还可以传更多。
虽然除了IE不支持第三个参数外,但Firefox和Safari/Chrome/Opera之间还是有区别的
传了两个参数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
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/setInterval函数的第三个以上参数
- 让window.setTimeout等支持带参数方法
- setTimeout/setInterval 第三个参数
- 让JavaScript中计时器setTimeout/setInterval的回调方法支持参数传递
- js setTimeout 参数传递使用介绍
- 修改 window.setTimeout,使之可以传递参数和对象参数
- 解决IE下不支持new Date()带参数的问题
- javascript settimeout传递参数
- Android Studio 2.2以上支持了Cmake的配置JNI的相关参数
- SetFilePointer 文件定位函数的使用---重点在于对大文件(2G/4G以上)的支持
- 使object_pool支持3个以上构造函数参数
- js读取本地文本,支持ie10以上和谷歌7以上(读取图片还未实现)
- jquery mobile开发移动web实战之 settimeout funcition带参数的问题
- IE中setTimeout和setInterval不支持回调函数参数的解决方法
- js setTimeout 参数传递使用介绍
- 火狐,chrome和IE都支持的复制剪切板功能window.clipboardData.setData
- window.setTimeout,可以传递参数和对象参数
- jQuery setTimeout传递字符串参数报错的解决方法
- IE下不支持new Date()参数