2011-08-04 176 views
1

this site Firefox中顯示的jQuery對話框(等待),但在IE8它不顯示jQuery的對話框(等待)顯示jQuery的對話框

$("#wait").dialog({resizable:false,width:100,modal:true,height:100 }); 
$("#wait").siblings(".ui-dialog-titlebar").hide(); 

var certification = ""; 
var address; 
var idCompany="821225021"; 

for (var i = 0; i < 10; i++)         
{ 
    idCompany =idCompany + i.toString(); 
    idCompany=idCompany + ".png"; 
    address="../Image/CertificationCompany/"+idCompany; 

    if (UrlExists(address)) 
    { 
     certification +="<a>"; 
     certification +="<img style='width:40px;height:40px;' src='../Image/CertificationCompany/" + idCompany + "' />"; 
     certification +="</a>";                        
    } 

    idCompany="821225021"; 
} 

$("#contentCertification").html(certification); 
$("#wait").dialog('close'); 

回答

0

同樣的事情發生在Chrome,但我認爲這可能是一個速度問題,瀏覽器也是也是快速顯示然後隱藏對話框。

如果您在Chrome中調試並逐步瀏覽JavaScript並在創建dialog()時突然中斷,則它會按預期顯示。

您需要的最後的XMLHTTPRequest結束後關閉對話框,你可以通過作用於XMLHttpRequest對象的readyState做到這一點(見MSDNMDN文檔)。

這就是說,因爲你已經在使用jQuery,我強烈地使用jQuery .get()方法爲所有請求建議,執行異步HTTP請求時,它模糊了瀏覽器之間的差異(和的其他瀏覽器的差異很多!) 。然後你跨瀏覽器兼容的代碼乾淨的回調機制,例如:

for (var i = 0; i < 10; i++) { 
    address="../Image/CertificationCompany/"+ idCompany + i.toString() + ".png"; 

    $.get(address, function(data) { 
     var certification = $('<a/>') 
      .append('<img style="width:40px;height:40px;" src="' + address + '"/>'); 

     $("#contentCertification").append(certification); 

     if ($('#contentCertification a').length == 10) { 
      $("#wait").dialog('close'); 
     } 
    }); 
} 
+0

如何解決 還有另一種方式來展現等待 – ashkufaraz

+0

我不understand.please寫的樣本 – ashkufaraz

+0

添加一個更好的例子,但這是目前未經測試 – andyb