IE7/IE8 and frozen animated gifs

前端 未结 3 1078
慢半拍i
慢半拍i 2020-12-30 04:56

I\'m quite sure this is an old problem.

This is how i render my animated gif:

 \'loading\'

        
相关标签:
3条回答
  • 2020-12-30 05:11

    I found accepted answer a bit complex to understand or implement however I had the same issue while doing this,

    I had following HTML

    <div id="progress_wheel_div" align="center" style="height:100%; display:none; vertical-align: middle;">
        <img src="images/progress_wheel.gif" style="margin-top: 204px;"/>
        <p class='arbitText' style="font-weight: bold;">Processing, Please wait!</p>
    </div>
    

    and in java script I was doing this

    function onSubmit() {
    
       var divProgressWheel = document.getElementById("progress_wheel_div");
       divProgressWheel.style.display = "block";
    }
    

    But it was not animating gif file,

    Solutions

    Updated my java script and made it like following

    function onSubmit() {    
       setTimeout(showProgress, 500);
    }
    
    function showProgress() {
    
        var divProgressWheel = document.getElementById("progress_wheel_div");
    
        divProgressWheel.innerHTML = "<img src='images/progress_wheel.gif' style='margin-top: 204px;'/><p class='arbitText' style='font-weight: bold;'>Processing, Please wait!</p>";
        divProgressWheel.style.display = "block";
    }
    

    please notice that divProgressWheel.innerHTML is same as what I had in html. There fore we can remove unnecessary html so modified html would be;

    <div id="progress_wheel_div" align="center" style="height:100%; display:none; vertical-align: middle;">
    
        </div>
    
    0 讨论(0)
  • 2020-12-30 05:24

    I ran into this once. If I tried to use JavaScript to show a little loading throbber as the browser moved to a page that was going to take a while to load, IE wouldn't animate the GIF. I solved it by putting the loading throbber directly into the HTML (not inserted via JavaScript) in a hidden div:

    <div id="pseudo-progress-area" style="display: none;">
        <h3>Please wait while we process your PayPal transaction...</h3>
        <p style="text-align: center;">
            <img src="/Media/Template/Images/LoadingProgressBar.gif" alt="" />
        </p>
    </div>
    

    and then using JavaScript to toggle the visibility of the div after a short delay (this is using an older version of the Prototype library, but you get the idea):

    <script type="text/javascript">    
        // We have to call this function via a setTimeout() or else IE7 won't
        // animate the GIF as the next page is loading.
        var fnHideConfirmation = function() {
            Element.hide( 'confirmation-area' );
            Element.show( 'pseudo-progress-area' );
        };    
    </script>
    

    That function is triggered in the form's submit button:

    <input 
        type="submit"
        class="button"
        name="SubmitConfirmation"
        value="Buy Now →"
        onclick="setTimeout(fnHideConfirmation, 50);" />
    

    So instead of delaying the src attribute change, leave it alone and just delay the call to your entire showLoading() function. Good luck!

    0 讨论(0)
  • 2020-12-30 05:33

    Spin.js works for this use case.

    0 讨论(0)
提交回复
热议问题