尝试使用setTimeout函数和.load函数的组合

时间:2013-08-23 12:05:04

标签: javascript jquery settimeout

我遇到以下代码问题。我想在它改变时显示文件的索引(test.txt)。 虽然它使用Mozilla,但使用IE9似乎settimeout()不起作用。

<div id="auto">xxx</div> 
<script type="text/javascript" src="jquery-1.10.2.min.js"></script>
<script type="text/javascript">

  $(document).ready( function () {
    $('#auto').load('test.txt');
    refresh1();
  });

  function refresh1() {
    setTimeout ( function() {
      $('#auto').load('test.txt');
      refresh1();
    },200);     
  }
</script>

我使用“meta”来防止IE兑现,但仍然没有成功。我用了

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" /> 

如果我把IE放在一边并使用Mozilla上面的代码工作,我的问题可以解决,但问题是我找不到一种方法(一个例子非常感谢)使用Mozilla读/写文件。是否有与Mozilla / Chrome等效的ActiveX?我尝试了一些OSFile的代码,但没有运气。我想避免更改浏览器。如果我们能够找到一个使用IE的解决方案来阅读“更改”文件的上下文而没有页面刷新我将非常高兴:)

3 个答案:

答案 0 :(得分:1)

在再次调用complete之前,您应该使用refresh回调等待响应。还要考虑刷一点慢,比如2秒。

$(document).ready( function () {
  refresh1();
});

function refresh1(responseText, textStatus, XMLHttpRequest) {
  // will be used as the complete callback
  setTimeout ( function() {
    $('#auto').load('test.txt', refresh1);
  }, 200);     
}

编辑:IE也可以有意识地缓存您的请求,使用Pragma: no-cache标头回复,或者在document.ready之前使用jQuery.ajaxSetup({ cache: false });,或者使用.load('test.txt?' + new Date().getTime(), refresh1)中的评论中说明。

参考:

答案 1 :(得分:0)

$(document).ready( function () {
    reload_interval = setInterval(function() {
       $('#auto').load('test.txt');
    }, 200) 
}

这甚至可以在IE中使用。

答案 2 :(得分:0)

完整的jquery解决方案

$('myElement').delay(200).queue(function( nxt ) {
    $(this).load('test.txt');
    nxt();
});

jQuery文档链接 - delayqueue

干杯!!