如何延迟调用JS函数 - 动画gif无法在IE中运行

时间:2012-12-27 20:59:04

标签: javascript internet-explorer

我很难在IE中运行动画GIF。适用于所有其他浏览器,但在IE中它只是冻结。我研究了这个,看起来像使用setTimeout的延迟可能会起作用。我不太清楚如何将它添加到以下函数中:

<script type="text/javascript">

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

    });

    });


</script>

gif位于一个名为“loading”的div中,它被隐藏起来。我会将超时添加到按钮的onClick或函数本身吗?

为什么IE会让事情变得如此困难!?

解决这个问题的任何帮助都会非常有帮助。

2 个答案:

答案 0 :(得分:2)

你的意思是这样的吗?

$(function() {

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

        setTimeout(function () {

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

        }, 100);

    });
});

答案 1 :(得分:1)

试试这个未经测试的psedo-code:

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将异步运行您的代码。