编程语言
首页 > 编程语言> > javascript函数在setTimeout中调用IE8的问题

javascript函数在setTimeout中调用IE8的问题

作者:互联网

我在javascript中定义了定位功能

var locID;

function locateMe()
{
    if(locID > 0)
    {
        // i do a jquery post here
    }

    setTimeout(locateMe, 2000);
} 

// my document ready function is here, and inside it, at the end of it
// i do this
locID = 0;
locateMe();

当我在Firefox中测试此代码时,locateMe函数每两秒钟调用一次,并按预期工作.当我在IE8中测试代码时,永远不会调用该函数(至少从我使用IE开发人员工具所看到的来看,似乎永远也不会调用该函数)

注意:在click事件处理程序中为“ zone_row”类定义了用于修改locID的代码.再次,在Firefox中一切正常.奇怪的是,在IE中,当单击zone_row时,该函数将被称为ONCE.我可以在开发人员工具上以及通过该jquery帖子的操作结果看到它们.

我认为IE只是有些异常,我还不熟悉.我究竟做错了什么?

编辑:更改为“ locateMe();”在setTimeout调用中定位我.

更新:添加更多我的代码(按评论中的每个请求)以显示位置(尽管没有比我的第一篇文章多的代码).

<script type="text/javascript">
    var z_items;
    var locID;

    function locateMe()
    {
            if(locID > 0)
            {
                    // my jquery post is here                   
            }   

            setTimeout(locateMe, 2000);
    }

    $(document).ready(function()
    {
            // ... some click events and get requests here ...

            locID = 0;
            locateMe();
    });
</script>

我还尝试将调用包装在setTimeout中(不起作用)并更改DOCTYPE(这实际上导致IE从不调用该函数,与现在调用一次且不再调用该函数相反).

解决方法:

问题解决了.我从这篇文章中找到了另一个问题的答案:

Prevent browser caching of jQuery AJAX call result

添加$.ajaxSetup({cache:false});对我的文档准备功能,它也解决了这个问题.看起来一直以来这都是一个缓存问题.

标签:internet-explorer,settimeout,javascript
来源: https://codeday.me/bug/20191208/2093783.html