【问题标题】:Extra paramater(s) in setTimeout: earliest IE version support?setTimeout中的额外参数):最早的IE版本支持?
【发布时间】:2014-04-29 14:20:31
【问题描述】:

为了避免隐含的 eval 和不必要的代码,我想使用:
setTimeout(alert, 1000, "Hello");

而不是:
setTimeout('alert("Hello")', 1000);
或:

setTimeout(function(){
    alert("Hello");
},
1000);

现在我已经读到 IE 支持 IE8 及更高版本,但如果我从模拟器(在 IE11 中)运行它,似乎即使 IE9 也不支持它。

谁能告诉我这对于 IE8 和 IE9 的实际版本是否属实?

【问题讨论】:

    标签: javascript internet-explorer version settimeout setinterval


    【解决方案1】:

    我在 IE9 和 IE8 中都失败了:http://jsbin.com/nuranote/1 在 IE10 和 IE11 中对我有效。

    有趣的是,they don't mention this support 在 IE 开发中心页面中为 setTimeout...

    现在,如果 alert 只是一个示例,但您不会使用主机提供的函数(并非总是由 Function.prototype 支持)执行此操作,您可以这样做:

    // Won't work with `alert` on IE9 but does with real JavaScript functions.
    // Even `alert` works IE10+ (they finally got it about Function.prototype)
    setTimeout(yourFunction.bind(null, "Hello"), 1000);
    

    这仍然创建了一个函数,但以(理论上)稍微优化的方式。 (对于 IE8 及更早版本,可能需要一些其他较旧的浏览器,您必须对此进行调整。)

    【讨论】:

    • 但是10个就成功了,跟模拟器一样?
    • @Jonathan:刚刚完成启动该虚拟机。在 IE10 中工作。 (和 IE11)
    • 谢谢。由于 IE9 不支持它,我猜我不会使用它。是的,我认为 MSDN 将第三个参数指定为 language 也很奇怪。
    • @Jonathan:是的。 :-) 坚持传递函数的版本。或使用bind(刚刚添加)。
    猜你喜欢
    • 2013-09-06
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 2014-04-09
    • 2021-12-06
    • 2021-08-25
    • 2013-06-01
    • 1970-01-01
    相关资源
    最近更新 更多