谷歌Chrome,在AJAX之前调整样式的IE问题

时间:2010-03-19 17:36:33

标签: javascript jquery ajax

当我使用AJAX时,我通常会在每次请求之前做一些事情让用户知道他们会等待一秒钟。这通常只需添加动画加载gif即可完成。当我这样做时,Firefox会按照您的期望进行操作,并在将控件移动到下一行(调用AJAX的位置)之前添加gif。在Chrome中,它会锁定浏览器并且根本不会进行任何DOM更改(更不用说加载图像),甚至包括更改某些内容的颜色,直到完成AJAX。这不仅仅是AJAX。它是控制权的任何东西,在控件返回窗口之前它永远不会进行DOM更改。

示例(使用jQuery):

function submit_order()
{
    $('#my_element').css('color', '#FF0000');  // Make text red before calling AJAX
    $.getJSON('/api/', my_callback)
    // Note, in IE and Chrome #my_element isn't turned red until the AJAX finishes and my_callback is run
}

为什么会发生这种情况,我该如何解决?我不能使用ASYNC因为数据的性质(这将是一个很大的混乱)。我在设置样式后尝试使用window.setTimeout(myajaxfunc, 150),看它是否会设置样式,然后执行超时,但看起来它不仅仅是AJAX的问题,而是一般的脚本控制(我想,因此这个标题提到了AJAX,因为这是我遇到这个问题的唯一一次)。

这与它在BTW功能中没有任何关系。

1 个答案:

答案 0 :(得分:1)

查看jQuery的ajaxStartajaxSendajaxStopajaxError方法,它们可以将事件附加到Ajax进程的各个部分。