javascript – Firefox中的setTimeOut问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – Firefox中的setTimeOut问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1338字,纯文字阅读大概需要2分钟。
内容图文
![javascript – Firefox中的setTimeOut问题](/upload/InfoBanner/zyjiaocheng/756/08ffab6cc57547e7b027d096cdb601ff.jpg)
为什么Firefox(v16)中没有以下工作?
var t = setTimeout(foo(), 1000);
我在控制台中得到的错误是:“无用的setTimeout调用(参数周围缺少引号?)”.将它包装在引号中似乎没什么用,除了使它呈现为字符串(不出所料).
但是当我将它包装在一个像这样的匿名函数中时,它确实工作正常:
var t =
setTimeout(function(){
foo();
}, 1000);
但为什么有必要呢?为什么它不会在Webkit或Opera中爆炸?幸运的中风?
解决方法:
将方法传递给setTimeout()时,它将在全局范围内执行.这将指向执行时的窗口.阅读更多HERE.
如果foo不是全局的,则无法找到它,ergo ReferenceError.
var __nativeST__ = window.setTimeout, __nativeSI__ = window.setInterval;
// just backed up the defaults. Now basically creating timeout and setInterval
//functions that take scope as a parameter,
//so you can use them in whichever invocation context you want.
window.setTimeout = function (vCallback, nDelay /*, argumentToPass1, argumentToPass2, etc. */) {
var oThis = this, aArgs = Array.prototype.slice.call(arguments, 2);
return __nativeST__(vCallback instanceof Function ? function () {
vCallback.apply(oThis, aArgs);
} : vCallback, nDelay);
};
window.setInterval = function (vCallback, nDelay /*, argumentToPass1, argumentToPass2, etc. */) {
var oThis = this, aArgs = Array.prototype.slice.call(arguments, 2);
return __nativeSI__(vCallback instanceof Function ? function () {
vCallback.apply(oThis, aArgs);
} : vCallback, nDelay);
};
内容总结
以上是互联网集市为您收集整理的javascript – Firefox中的setTimeOut问题全部内容,希望文章能够帮你解决javascript – Firefox中的setTimeOut问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。