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

在setTimeout中调用自身的javascript函数存在IE8问题,javascript,internet-explorer,settimeout,Javascript,Internet Explorer,Settimeout,我在javascript中定义了一个locate函数 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

我在javascript中定义了一个locate函数

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的开发工具所看到的情况来看,它似乎从未被调用)

注意:在修改locID的“zone_row”类的单击事件处理程序中定义了代码。同样,在firefox中,一切都按预期进行。奇怪的是,在IE中,当单击区域行时,函数将被调用一次。我可以从开发人员工具和jquery帖子的操作结果中看出这一点

我想我对IE还有一些不熟悉的地方。我做错了什么

编辑:将“locateMe();”更改为setTimeout调用中的locateMe

更新:添加更多我的代码(注释中的每个请求)以显示位置(尽管代码不会比我的第一篇文章多多少)


var z_项目;
洛西德变种;
函数locateMe()
{
如果(locID>0)
{
//我的jquery帖子在这里
}   
setTimeout(locateMe,2000);
}
$(文档).ready(函数()
{
//…一些单击事件并在此处获取请求。。。
locID=0;
locateMe();
});
我还尝试用setTimeout包装调用(没有效果)并更改DOCTYPE(这实际上导致IE从未调用该函数,而现在它只调用了一次,再也没有调用过)

setTimeout( locateMe, 2000 );

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

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

我发现,对于IE(甚至IE9),如果将自调用函数嵌套在匿名函数中,它就会工作。但看起来Toddeman的问题确实与ajax部分有关

因此,代码应该是:

function locateMe()
{
    /* ... */   

    //IE way (still works in Chrome and FF):
    setTimeout(function () { locateMe(); }, 2000);

    //original: setTimeout(locateMe, 2000);
}

更改setTimeout(“locateMe()”,2000);设置超时(locateMe,2000);首先,实际上,
setTimeout(“locateMe()”,2000)对我来说很好(FF3.6和IE8中的Win7)。您使用的是什么
DOCTYPE
?另外,代码放在哪里?您是否尝试过在超时时包装第一个
locateMe()
调用(在页面加载过程中,可能有什么东西在冲击您)?最后,将
if(locId>0){…}
替换为
testID++;test=document.getElementById(“test”);test.innerHTML=testID.hmmm。。。我没有考虑DOCTYPE。它现在被设定为严格的。坏主意?(@Brett-bingo!testID建议很好。这是我在“调试”互联网内容时从未想到的事情(bc我不习惯这种编程)。我这样做了,并收到IE8关于不运行activeX控件的警告。当我点击“允许阻止内容”时,testID开始增加。仍然不起作用。我认为,由于Brett的评论起作用,帖子现在可以起作用。它不起作用。我有计数器和帖子。我可以看到计数器增加,表明功能ion实际上正在被调用。我使用fiddler来监控流量。我只看到一个post发出。只是一个注释,我还在计数器下方显示了locID。它确实每次都是正确的ID(即不是零)所以我应该进入if发送帖子。我现在又迷路了。我不知道如何用正确的locID调用函数而不发送帖子??谢谢这个提示!救了我一天!
function locateMe()
{
    /* ... */   

    //IE way (still works in Chrome and FF):
    setTimeout(function () { locateMe(); }, 2000);

    //original: setTimeout(locateMe, 2000);
}