2012-12-27 29 views
3

我努力獲得一個動畫gif在IE中運行。適用於所有其他瀏覽器,但在IE中它只是凍結。我研究過這個,看起來像使用setTimeout的延遲可能會起作用。不太確定如何將其添加到以下功能:如何延遲調用JS函數 - 動畫gif不工作在IE中

<script type="text/javascript"> 

    $(function(){ 
     $('#photo_form').on("submit", function() { 
     $('#loading').show(); 

    }); 

    }); 


</script> 

gif是在一個名爲'加載'的div裏面,它是隱藏的。我會添加超時onClick的按鈕或功能本身?

爲什麼IE讓事情變得如此困難!

解決此問題的任何幫助將是非常有用的。

+0

提交卸載頁面。您必須將表單定位到iframe或使用Ajax才能運行動畫。如果使用Ajax,則需要取消提交事件 – mplungjan

+0

也許事先調用e.PreventDefault,然後顯示div,然後使用HTMLFormElement的「submit」方法提交表單。 – Austin

回答

2

你的意思是這樣的嗎?

$(function() { 

    $('#photo_form').on("submit", function() { 

     setTimeout(function() { 

       $('#loading').show(); 

     }, 100); 

    }); 
}); 
+0

會不會導致頁面凍結? – dmarra

+0

讓我們讓OP在他自己的實現中嘗試這個。 – frenchie

+0

這就解決了這個問題。感謝frenchie。 – user1022772

0

試試這個curde,未經測試psedo代碼:

var startTime; 
var thread; 

$(function(){ 
     $('#photo_form').on("submit", function() { 
     $('#loading').show(); 
    startTime = time(); 
    thread = setInterval("showLoadingGif", 1); 

    }); 

function showLoadingGif() { 
    var timeToWait = 5; //change interval as needed 
    if(timeToWait + startTime <= currentTime) { 
     //show the gif 
     clearInterval(thread); 
    } 
} 

這是一個很長一段時間,因爲我已經使用JavaScript的工作,所以這幾乎肯定需要調整;但原理是一樣的:不斷調用該函數,並讓該函數決定何時停止被調用。

setTimeout()會導致您的頁面在您等待時凍結。 setInterval將異步運行你的代碼。