2012-11-30 94 views
0

装载机GIF这是我的jQuery AJAX设置代码,效果很好Chrome,但很在Firefox很慢,我发现它是装载机GIF引发的问题,如果没有加载动画,阿贾克斯快速运行中firefox,任何人konw为什么?非常感谢你。阿贾克斯减缓与在Firefox

的Javascript:

var div=$("<div id='mask'/>"); 
$.ajaxSetup({ 
    beforeSend:function(jqxhr,settings){       
     div.addClass('loader').appendTo('body');       
    } 
    ,complete:function(){ 
     div.remove();   
    } 
}); 

CSS:

#mask { 
    position:fixed; 
    top:0; 
    left:0; 
    right:0; 
    bottom:0; 
    opacity:0.2; 
    background-color:#fff; 
} 

.loader { 
    background:url(ajax-loader.gif) center center no-repeat; 
} 
+0

动画GIF不应该这样做。文件有多大? –

+0

只有5KB,服务器端是一个PHP文件 – user995789

回答

0

首先,关闭您的股利。另外,您是否尝试预加载您的GIF?一个2.5kb不能真的减慢你的ajax查询......但是,没有什么是不可能的。顺便说一下,你的元素是#mask。

  1. HTML页面上创建你的面具元素:

<div id="mask"> </div>

  1. CSS它:
position:fixed; 
top:0; 
left:0; 
right:0; 
bottom:0; 
opacity:0.2; 
background-color:#fff; 
display : none; 
background:url(ajax-loader.gif) center center no-repeat; 
  1. 在你的JavaScript:
var div = $("#mask"); 
$.ajaxSetup({ 
    beforeSend:function(jqxhr,settings){       
     div.show();       
    } 
    ,complete:function(){ 
     div.hide();   
    } 
}); 
+0

是的,没有什么是不可能的,这是很奇怪的, – user995789

+0

你尝试创建一个HTML元素和显示/处理你的Ajax查询时将其隐藏?您是否在每次查询完成时检查是否删除了您的元素? – kfa

+0

是,米歇尔斯曾建议我这样做,我只是尝试,但问题依然存在。 – user995789

0

我想这是因为你添加和删除DIV到身体每一个Ajax请求。我建议你尝试在HTML中声明这一点,只是显示/隐藏:

#mask { 
.. 
display: none; 
background:url(ajax-loader.gif) center center no-repeat; 
.. 
} 

$.ajaxSetup({ 
    beforeSend:function(jqxhr,settings){       
     $('#mask').show(); 
    } 
    ,complete:function(){ 
     $('#mask').hide(); 
    } 
}); 
+0

只是试过,但失败了。 – user995789

+0

您是否在html中添加了div?更具体的“失败”... –

+0

是的,我添加了div,按照你的建议编辑了代码,但是ajax显示没有改进,我将php的最大执行时间设置为100,这样我的firefox就可以成功完成ajax。事实上,如果没有GIF,只有大约400毫秒 – user995789