`
zhouyrt
  • 浏览: 1163406 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

 
阅读更多

setTimeout/setInterval,这两个函数相信前端开发同学都很熟悉。它们在非IE(6-9)浏览器中还可以如下使用

 

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 

 

0
2
分享到:
评论

相关推荐

    BOM系列第一篇之定时器setTimeout和setInterval

    然而,IE9及更早版本的浏览器不支持传递多个参数,因此需要使用立即调用的函数表达式(IIFE)或在外部定义函数并传递参数,以实现兼容。 关于`this`的指向,`setTimeout`内部的函数执行环境不是当前作用域,因此`this...

    setTimeout与setInterval在不同浏览器下的差异

    IE的实现允许传递三个参数,其中第三个参数用于指定脚本语言类型,而其他浏览器可能将所有额外的参数都作为函数调用的参数传递。 在实践中,推荐使用函数对象而不是字符串形式来调用`setTimeout`,因为这样可以避免...

    Javascript对象中关于setTimeout和setInterval的this介绍

    但是需要注意的是,IE6-IE8版本的浏览器不支持bind方法,这就需要我们手动实现一个bind函数或寻找polyfill来实现兼容。 第二种方法是利用一个立即执行函数表达式(IIFE)来模拟bind的效果。 ```javascript this....

    html入门第三天.

    - **Firefox中的事件对象**:Firefox不支持全局的事件对象,而是仅在事件触发时生成一个局部的`event`对象。这意味着开发者必须在事件处理函数内部通过参数传递的方式来接收这个事件对象。 ##### 2. 事件对象的属性...

    JavaScript简单的banner图片切换焦点图代码,兼容IE 6789 及其他主流浏览器

    例如,ES5是IE 6789支持的最新版本,而ES6(也称为ES2015)引入了类、箭头函数等现代语法,这些在较新的浏览器中得到了广泛支持。 在创建一个兼容IE 6789的Banner切换焦点图时,我们需要避免使用ES6以上的语法,并...

    jquery简洁的左右切换焦点图代码,可循环自动播放,兼容 IE 6789 及其它主流浏览器

    在本文中,我们将深入探讨如何使用jQuery实现一个简洁的左右切换焦点图代码,该代码具有自动播放和跨浏览器兼容性的特点,特别强调对IE 6、7、8、9的支持。我们将讨论jQuery库的核心概念,JavaScript和ECMAScript的...

    你知道setTimeout是如何运行的吗?

    在处理`setTimeout`和`setInterval`时,为了兼容不同浏览器,有时需要对参数传递进行特殊处理,例如,对于IE9及以下版本,可以通过创建一个闭包来传递额外参数: ```javascript if (document.all && !window....

    jquery实现的可兼容ie6并带左右切换按钮的幻灯片效果源码.zip

    5. **定时器与自动播放**:为了实现自动播放功能,可以使用JavaScript的`setTimeout`或`setInterval`函数,定期执行幻灯片切换。同时,还需要考虑暂停和恢复播放的逻辑,比如当用户手动点击切换按钮时,自动播放应...

    js四图横向滚动效果(可自动可手动),此效果兼容所有主流浏览器,包括IE6哦

    为了确保在IE6上也能正常工作,可能需要使用一些旧版JavaScript特性,比如`document.getElementById`和`element.style`,以及避免使用不被IE6支持的CSS3属性。可能还需要引入像jQuery这样的库来处理浏览器差异问题,...

    web前端面经

    通过以上对给定代码片段的详细分析,我们可以了解到在Web前端开发中的一些核心概念和技术要点,包括但不限于事件处理的兼容性问题、逻辑运算符的高级用法、事件传播机制的理解以及定时器函数的应用等。这些知识点...

    js进阶知识44张脑图.zip

    - 柯里化是一种将接受多个参数的函数转换为接受单一参数(通常是另一个函数)并返回新函数的编程技术。这种技巧可以用来实现函数的部分应用,增强代码的可读性和复用性。 3. **回调函数**: - 回调函数是作为参数...

    javascript window对象

    - **兼容性**:IE5.5及以上版本支持。 #### 四、总结 以上介绍的`Window`对象的属性和方法涵盖了大部分网页开发中常用的功能。通过这些API,开发者能够有效地控制浏览器窗口的行为,实现诸如弹窗、定时任务、窗口...

    文字图片无缝滚动

    同时,考虑到旧版IE浏览器不支持某些CSS3属性,可以引入polyfill库或使用jQuery等库进行兼容处理。 六、实战演练 在`demo.html`和`images`目录下,我们可以看到实际的代码示例。`demo.html`包含了HTML结构和...

    无缝循环滚动插件

    6. **定时器(setTimeout/setInterval)**:通过定时器可以定期执行滚动动画,实现自动播放的效果。同时,还需要考虑暂停、继续和调整速度的逻辑。 7. **插件结构**:一个良好的jQuery插件通常包含初始化、设置默认...

    javascript常用对象梳理

    - 第三个参数为窗口的风格,可以设置多个选项,各选项间用逗号分隔。 - `toolbar`: 是否显示工具栏。 - `location`: 是否显示地址栏。 - `directories`: 是否显示链接栏。 - `status`: 是否显示状态栏。 - `...

    JavaScript进阶教程(第三课)第1/2页

    ### JavaScript进阶教程(第三课) #### 事件的定时以及浏览器的识别 随着JavaScript技能的不断深化,我们能够开发出更为复杂的应用程序。在前一课中,我们探讨了如何利用JavaScript来创建Cookies。本课将重点介绍...

    个人收藏的网页右下角弹窗口代码

    对于第一种方法中提到的不支持IE6的问题,可以考虑采用更加兼容的JavaScript库,如jQuery等来简化代码,并确保更广泛的浏览器支持。 #### 动画效果 可以通过CSS3的`transition`或`animation`属性来替代JavaScript...

Global site tag (gtag.js) - Google Analytics