javascript - 为什么 setTimeout 在 IE 上不起作用

标签 javascript jquery internet-explorer

一个非常简单的网页,里面有一个空的div:

<div id="joblist">
</div>

<script type="text/javascript">
    readJobList();
</script>

还有 JavaScript:

function handleReadJobList(text) {
    var e = document.getElementById("joblist");
    e.innerHTML = text;
    setTimeout(function(){readJobList();}, 1000);
}

function readJobList() {
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
        if (xhttp.readyState == 4 && xhttp.status == 200) {
            handleReadJobList(xhttp.responseText);
        }
    }
    xhttp.open("GET", "joblist.ajax", true);
    xhttp.send();
}

当浏览器加载页面时,readJobList将被调用 第一次,它发送一个 HTTP 请求。 handleReadJobList 将读取 响应文本,更新div的内容,并使用setTimeout 一秒后调用 readJobList。这是一个循环,虽然 它是异步的。

此代码在 Firefox、Chrome 和 Opera 上运行良好。但是在IE11上就可以了 不起作用。我不知道为什么。仅div的内容 更新过一次。不会再更新了。

如何解决?

最佳答案

如果 AJAX 适用于除 IE 之外的所有浏览器,那么可能是因为 IE 正在缓存结果。您可以使用缓存破坏随机查询参数(如 Phil 建议的那样),或者更好的是发送正确的 header 来告诉 IE(和所有其他浏览器)不要缓存您的 AJAX 响应。

有关涵盖所有主要浏览器的已知工作 header 集,请参阅此答案:How to control web page caching, across all browsers?

关于javascript - 为什么 setTimeout 在 IE 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33990779/

相关文章:

javascript - IE8 "Object doesn' t support this property or method"with JQuery 1.7

internet-explorer - IE 仅在 404 和 500 页面上不显示图标。什么是可能是错误的?

html - 从 :before/:after outside its boundaries in IE 定位一个元素

javascript - 滚动条不工作

javascript - Web 应用程序中的 jscroll Pane

javascript - 是否可以在 JavaScript 对象文字表示法中创建只读成员?

Javascript 明显的疯狂

c# - 调整 ASP.NET Gridview 列的大小超出其数据长度

javascript - 使用 jQuery 动态应用的背景图像消失

javascript - 简单的 JQuery 脚本动画不起作用