1

我有一些更新页面内容的实时查询处理程序。我只想在他们被解雇后才显示内容(以防止用户暂时看到未更改的版本)。使用普通 AJAX 加载内容。

到目前为止,我尝试了以下方法:

  1. 通过html获取ajax
  2. 使其不可见(可见性:隐藏)
  3. window.setTimeout(showContent, 100) - 将可见性设置为可见

我认为这会起作用,因为单个选项卡有一个 JS 线程 - 所以计时器应该在所有其他操作完成后触发。它适用于 FF 和 IE。但是在 Chrome 中,有时我仍然会看到一段时间内未更改的内容 - 好像 JS 被线程化或被超时中断?

或者也许有更好的方法来实现我想要做的事情?(没有超时)。

4

2 回答 2

1
  • 您可以使用成功回调
  • 或者您可以返回 javascript 本身并将其添加到 dom。(您将在其中指定显示机制:))
于 2011-02-07T09:38:37.937 回答
0

事实证明,livequery 在内部使用超时确实运行实时查询,所以这是超时方法排序的问题。

所以我解决了这个问题,直到 livequery 队列清除(有一些边界,如果用户对他的鼠标很疯狂并且不断产生事件):

function run_after_livequery(method) {
    var tries = 0;
    function run_if_livequery_done() {
        if (!$.livequery.queue.length || tries >= 20) {
            method();
        } else {
            window.setTimeout(run_if_livequery_done, 50);
            tries++;
        }
    }

    window.setTimeout(run_if_livequery_done, 50);
}
于 2011-02-07T12:32:55.193 回答