【问题标题】:Loading animation freezes in IE7 and sometimes in IE8 when making an async ajax call在进行异步 ajax 调用时,加载动画在 IE7 中冻结,有时在 IE8 中冻结
【发布时间】:2011-12-20 02:42:54
【问题描述】:

当通过jQuery.ajax() 向 Web 服务发送异步请求时,我正在使用动画 gif 来显示。 gif 最初是隐藏的 (display: none),并在发送请求之前通过 .show() 显示。

它在 Chrome、FF 和 IE9 中按预期工作,看起来还不错,但在 IE8 中,它的动画在此过程中不时冻结,在 IE7 中只显示 gif,但根本没有动画。

关于这个问题,我已经搜索了多个线程,但它们已经过时了(我知道 IE7 和 IE8 也是如此。但遗憾的是,我们仍然必须完全支持这些浏览器)并且共识似乎是:不可能 - IE7只有一个线程来运行 JS 和动画 gif。

我希望,已经过去了足够的时间,并且他们存在解决此问题的方法。我对 JS 和 Web 开发还很陌生,所以很可能,我没有足够的经验来找到一个其他人都知道的简单解决方案。 :)

提前致谢, 鲍里斯

【问题讨论】:

  • 您是否按页面上的Esc 键来执行某些操作(例如关闭对话框)?不确定其他浏览器,但如果按下Esc,IE 会停止 GIF 动画。

标签: jquery ajax internet-explorer-8 internet-explorer-7 gif


【解决方案1】:

您可以尝试在节目的回调中进行 ajax 调用:

$(".gif_element").show("normal", function() {
    $.ajax({})
});

当然这是一种解决方法

【讨论】:

  • 这似乎确实有效。我有点羞愧,没想到节目回调。我在每个可能的地方都尝试过setTimeouts,但没有任何效果。谢谢!现在我“只是”需要找到一个冻结的解决方案,而 html 是通过 jQuery 注入的。 :)
【解决方案2】:

尝试使用 jquery 删除 display:none 属性。

$("#id or .class").css("display", "block" );

$("#id or .class").removeAttr("display");

同样的问题也发生在我身上,并且上述问题之一有效。 :)

【讨论】:

  • 似乎也可以。谢谢!尽管我认为您的第二个建议中的意思是 $("#id or .class").css("display", "");,因为 display 不是 html 属性,而是 css 属性。 :)
  • 是的,你是对的.. 我只是复制粘贴了我的上一行并忘记编辑;)
猜你喜欢
  • 1970-01-01
  • 2010-12-20
  • 1970-01-01
  • 1970-01-01
  • 2011-11-04
  • 1970-01-01
  • 1970-01-01
  • 2013-01-08
  • 1970-01-01
相关资源
最近更新 更多