0

我对以下代码有疑问。我想在文件(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>

我使用“元”来防止 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 读取“更改”文件的上下文而无需 PAGE REFRESH,我会非常高兴:)

4

3 回答 3

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或者使用标头响应,或者jQuery.ajaxSetup({ cache: false });在 document.ready 之前使用,或者如评论中所述使用.load('test.txt?' + new Date().getTime(), refresh1)

参考:

于 2013-08-23T12:15:29.063 回答
0

一个完整的jquery解决方案

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

jQuery 文档链接 -延迟队列

干杯!!

于 2013-08-23T12:15:12.647 回答
0
$(document).ready( function () {
    reload_interval = setInterval(function() {
       $('#auto').load('test.txt');
    }, 200) 
}

即使在 IE 中也应该有效。

于 2013-08-23T12:07:51.870 回答