2012-02-13 70 views
0

我有以下HTML:某些HTML不想在IE中显示/隐藏。为什么?

<div id="loading-overlay"> 
    <div id="loading-overlay-background"></div> 
    <div id="loading-overlay-content"> 
     Processing... 
     <br /> 
     <img src="@Url.Content("~/Content/img/ajax-loader.gif")" title="" alt="Please Wait" /> 
    </div> 
</div> 

而CSS:

#loading-overlay 
{ 
    position:fixed; 
    width:100%; 
    height:100%; 
    top:0; 
    left:0; 
    z-index:5000; 
} 
#loading-overlay-background 
{ 
    position:relative; 
    width:100%; 
    height:100%; 
    top:0; 
    left:0; 
    background-color:#000; 
    opacity:0.5; 
    filter:alpha(opacity=50); 
    z-index:5001; 
} 
#loading-overlay-content 
{ 
    position:fixed; 
    top:25%; 
    left:50%; 
    margin-left:-150px; 
    margin-top:-20px; 
    height:40px; 
    width:300px; 
    color:#fff; 
    text-align:center; 
    z-index:15002; 
} 

这里是一些JavaScript(jQuery的):

$.ajax({ 
       url: 'controller/action', 
       beforeSend: function() { 
        $('#loading-overlay').show(); 
       }, 
       success: function (data, textStatus, jqXHR) { 
       }, 
       error: function (xhr) { 
       }, 
       complete: function() { 
        $('#loading-overlay').hide(); 
       } 
      }); 

为什么不是我的“加载覆盖“在任何AJAX调用中出现在任何版本的IE中?

编辑:是的,它在FireFox和Chrome中很好用。这些AJAX调用可能需要几分之一秒到20秒左右才能完成。警报消息确实显示,但HTML不显示。

+0

AJAX调用需要多快才能完成?如果它们足够快,'#loading-overlay'元素将显示然后再次隐藏并且可能不明显。 – 2012-02-13 15:43:58

+0

它适用于其他浏览器? – Christoph 2012-02-13 15:44:24

+0

我会说ajax正在快速完成。在show()调用之后放一个提示,看看它是否显示 – Henesnarfel 2012-02-13 15:44:47

回答

1

尝试这样的事情,

beforeSend: function() { 
    $('#loading-overlay').show(1); 
}, 

complete: function() { 
    $('#loading-overlay').delay(500).hide(250); 
} 

看到它在行动,here ..

编辑:

你也可以尝试减少的动画帧速率。

使用jQuery.fx.interval = 50;

默认情况下,它被设置为13毫秒。使用.fadeIn()可以减少CPU资源的负担。但建议谨慎调整这一点。阅读更多here

+0

看起来好像会出现,但我需要到办公室看清楚它的行动。现在去办公室。 – Dimskiy 2012-02-13 17:22:56

+0

好的。即将到来,但它看起来像beforeSend中的.show(),当它已经在成功执行JS时触发。 – Dimskiy 2012-02-13 18:11:49

+0

我根据这个答案做了一些工作。总之,我重写了一些成功的代码,以加快处理时间并将.hide()更改为.fadeIn(200)。有一些关于动画与纯CSS改变(.show())有关IE处理不同的内容。这仍然不理想,但业务除外。现在继续,未来可能会回到这个问题。谢谢! – Dimskiy 2012-02-13 22:33:25

-2

因为你完全隐藏它。

它在成功/错误回调后被调用。

+0

它应该显示在发送ajax之前,然后它隐藏在ajax完成后 – Henesnarfel 2012-02-13 15:45:44

+0

是啊,他隐藏它,因为他在beforeSend中显示它。 – 2012-02-13 15:46:55

+0

我错了,没有读得够好 – 2012-02-13 15:47:08

0

感谢大家,我只是非常困惑,因为我的覆盖显示在所有的浏览器中,除了IE浏览器,现在这对所有的浏览器都很好,我已经将它们集成到一个jsf页面中,并且它很好。

相关问题