【问题标题】:javascript setTimeout, page looks like is endlessly loading (firefox)javascript setTimeout,页面看起来像是在无休止地加载(firefox)
【发布时间】:2009-10-27 00:10:33
【问题描述】:
var checkTextValue = setTimeout(function() {
var textVal = $('p').text();
if (textVal == 'expectedValue'){
    callback();
} else {
    setTimeout(arguments.callee, 10);
}
},10);

我有这段代码,它工作得很好,但问题是在 Firefox 中页面看起来像是在无休止地加载。

【问题讨论】:

  • 除了无休止的加载之外,您还期望什么事件来更新段落的文本?它会更新吗?根据您正在执行的操作,10 毫秒的延迟可能不足以让其他事件发生(尽管在现代系统中不太可能)。
  • 在我的真实代码中,我从 iframe 中获取该段落,并且该段落由 php 页面在该 iframe 中打印为成功结果,这就是我在该段落中寻找的内容......( php 打印 1 表示成功,0 表示失败)
  • 你可以考虑用 ajax 请求替换 iframe...
  • php 上传图片...所以我不能用我所知道的 ajax 请求来做到这一点
  • 所以你的问题根本不是由 setTimeout 引起的,很可能是由 iframe 引起的。也许发布另一个问题来描述您正在使用 iframe 做什么,并询问不会使页面看起来像“无休止加载”的替代建议?

标签: javascript firefox settimeout


【解决方案1】:

看起来有点没用...我的意思是 setTimeout(checkTextValue, 10); - 你在那里设置什么? checkTextValue 只是一个超时 ID,仅此而已...不知道为什么 FF 会无休止地加载,仅仅是因为代码错误...

【讨论】:

  • 这是我原始脚本的小规模版本,我更新了它(arguments.callee),它确实有效......唯一的问题是在FF中永久加载状态
  • var check = function () { console.log('chack');设置超时(破解,1000); } 查看();这段代码在没有这个加载问题的情况下完美运行(同样的事情过于简单了)。所以试试看。如果它有效 - 这意味着您需要增加超时本身。
  • 顺便说一句,您的代码适用于我的 FF 3.5.4pre Win。所以,嗯...检查你的FF? :) 没有加载“相似”的症状。
【解决方案2】:

那是因为它在无休止地加载。基本上,您每十毫秒进行一次递归并启动另一个实例。如果有足够的时间,我认为也有可能用这段代码杀死你的浏览器。

尝试在您的输入字段上使用onchange-eventhandler。

【讨论】:

  • 我很确定是每十毫秒,而不是几秒
  • 好的,但是该函数每十毫秒调用一次,直到 textVal 获得预期值。这就是我解释这段代码的方式......
【解决方案3】:

我认为这是一个recurssion的案例。谷歌“recusrion”以获得更多线索。只是在开玩笑。 checkTextValue 将无限期运行,除非该值为“expectedValue”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-07
    • 1970-01-01
    相关资源
    最近更新 更多