我在JavaScript中定义了一个定位函数。
当我在火狐浏览器中测试这段代码时,locateMe函数每两秒钟被调用一次并且按预期工作。但是当我在IE8中测试代码时,该函数从未被调用(至少从IE的开发工具中看不到有被调用)。请注意:“zone_row”类别的点击事件处理程序中定义了代码来修改locID。同样,在火狐浏览器中一切都按预期工作。奇怪的是,在IE中,当zone_row被单击时,该函数将被调用一次。我可以通过开发人员工具和jquery post的结果看到这一点。我认为这只是IE上的某些异常情况,我尚未熟悉它。我做错了什么?注意:将“locateMe();”更改为setTimeout调用内部的locateMe。更新:添加我的更多代码(根据评论请求)以显示放置位置(尽管比第一篇文章的代码少得多)。
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();
当我在火狐浏览器中测试这段代码时,locateMe函数每两秒钟被调用一次并且按预期工作。但是当我在IE8中测试代码时,该函数从未被调用(至少从IE的开发工具中看不到有被调用)。请注意:“zone_row”类别的点击事件处理程序中定义了代码来修改locID。同样,在火狐浏览器中一切都按预期工作。奇怪的是,在IE中,当zone_row被单击时,该函数将被调用一次。我可以通过开发人员工具和jquery post的结果看到这一点。我认为这只是IE上的某些异常情况,我尚未熟悉它。我做错了什么?注意:将“locateMe();”更改为setTimeout调用内部的locateMe。更新:添加我的更多代码(根据评论请求)以显示放置位置(尽管比第一篇文章的代码少得多)。
<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从未调用该函数,与现在只调用一次不同,之后就再也不调用了)。
setTimeout("locateMe()",2000);
对我来说完全没问题(Win7中的FF3.6和IE8)。你使用的是什么DOCTYPE
?此外,你的代码放在哪里?你尝试过将第一个locateMe()
调用包装在超时中吗(也许在页面加载期间有些东西正在破坏你)?最后,用testID++;test=document.getElementById("TEST");test.innerHTML=testID;
替换你的if(locId>0){...}
。 - Brett Pontarelli