Javascript Google Chrome,即在AJAX之前调整样式的问题

Javascript Google Chrome,即在AJAX之前调整样式的问题,javascript,jquery,ajax,Javascript,Jquery,Ajax,当我使用AJAX时,我通常在每个请求之前做一些事情,让用户知道他们将等待一秒钟。这通常是通过添加动画加载gif来完成的。当我这样做的时候,Firefox会按照您的预期进行操作,并在将控件移动到下一行(调用AJAX)之前添加gif。在Chrome中,它锁定浏览器,在AJAX完成之前,根本不进行任何DOM更改(更不用说加载图像),甚至包括更改某些内容的颜色。但这不仅仅是AJAX。它是保持控件的任何东西,并且在将控件返回给窗口之前,它从不进行DOM更改 示例(使用jQuery): 为什么会发生这种情况

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

示例(使用jQuery):

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


顺便说一句,这与它在函数中没有任何关系。

看看jQuery的功能和方法,它们可以让你将事件附加到Ajax过程的各个部分。

@Tom这一次对我没有帮助,因为我不是完全诚实的。我使用jQuery,但我使用的是Ajax的外部API。不过在实现方面类似这就是为什么我会这样问这个问题。不过,我选择了你的答案,因为这是我不知道的非常好的信息。从现在开始,当我纯粹在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
}