【问题标题】:javascript setTimeout(); doesn't work on linux (firefox)javascript setTimeout();不适用于 linux (firefox)
【发布时间】:2014-04-22 10:06:25
【问题描述】:

我正在制作一个动画,它使用 setTimeout(); javascript中的函数。动画在 chrome、firefox 上运行良好,甚至在我的智能手机上。唯一的问题是 ubuntu 上的 firefox。

控制台给我一个错误:

ReferenceError: loop is not defined @ file:///home/nigga/GitHub/imgdrop/imgdrop.js:45

代码:

function loop()
{
    regenerate();
    animate();

    setTimeout("loop()", 1000/fps);
}

编辑:

我尝试了@LOL 建议的方法,它在 linux 上有效,但在 windows(firefox 和 IE)上无效。

【问题讨论】:

  • 也许 Firefox 缓存了你的脚本?

标签: javascript linux firefox animation settimeout


【解决方案1】:
function loop()
{
    regenerate();
    animate();
setTimeout(function() {loop();}, 1000);
}

function loop()
    {
        regenerate();
        animate();
    setTimeout(loop, 1000);
    }

【讨论】:

  • 为什么要创建一个匿名函数,它只调用另一个不带参数的函数?
  • @LOL — 好吧,您没有将它用作闭包,您可以直接使用 loop 函数作为参数。
  • @Quentin 我总是尝试这个并且工作正常。你想说我必须用setTimeout(loop();, 1000);
  • 嗯,是的,它工作得很好,只是需要做更多的工作,并且使代码膨胀以使其更难阅读。不,它调用loop 并将其返回值传递给setTimeoutsetTimeout(loop, 1000);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-23
  • 2016-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多