setInterval & Internet Explorer

5
我已经搜索了很久,但仍未找到任何可以使setInterval在所有版本的Internet Explorer中工作的方法。
以下是我目前正在使用的代码 ...
<script type="text/javascript">

$(document).ready(function () {
    $('#varRefresh').load('reload.php');

    window.setInterval("refreshVar();", 5000); //**** every 5 seconds
});

function refreshVar() {
    $('#varRefresh').load('reload.php');
}
</script>

<div id="varRefresh">
</div>

有人能指点我一下,让我能在IE上正常运行吗?


5000不等于每20秒。 - Abhilash
1
除了“refreshVar()”每5秒钟调用一次而不是20秒之外,还有什么问题? - Ja͢ck
7
建议使用window.setInterval(refreshVar, 5000);代替window.setInterval("refreshVar();", 5000);。更多语法信息请参考 2 - user2428118
2
按F12打开IE的错误控制台。这段代码中没有应该失败的内容,但之前的脚本可能出错了。 - Michael Berkowski
5个回答

3

您正在尝试加载的页面可能只是缓存的。

您可以按照以下方式强制Internet Explorer不缓存页面:防止Internet Explorer 8中的页面缓存

或者,您可以简单地将时间戳附加到URL末尾;因为对于IE而言,该URL是新的,所以它将始终加载最新版本。

示例:

$(document).ready(function () {
    $('#varRefresh').load('reload.php?'+new Date().getTime());

    window.setInterval(refreshVar, 5000); //**** every 5 seconds
});

function refreshVar() {
    $('#varRefresh').load('reload.php?'+new Date().getTime());
}

1

尝试替换此行:

window.setInterval("refreshVar();", 5000);   //**** every 5 seconds

使用这个:

window.setInterval(refreshVar, 5000);   //**** every 5 seconds

(将第一个参数改为函数引用而不是字符串)


我尝试了但没有成功。它可以正常运行.load部分,但就是无法每5秒刷新一次。 - unu

1

Working Fiddle 在 Chrome、FireFox、Safari、Opera、Internet Explorer 和 Android 浏览器上进行了测试。

<script type="text/javascript">

$(document).ready(function () {
    $('#varRefresh').load('reload.php');
    refreshVar();
});

function refreshVar() {
    var refresh = setInterval(function(){
    $('#varRefresh').load('reload.php');
    }, 5000);
}
</script>

<div id="varRefresh">
</div>

希望它有所帮助!

0

不要将函数名称作为字符串文字传递,尝试像这样传递函数引用:

window.setInterval(refreshVar, 5000);

-2

我本来以为在那个网站w3fools.com上会找到一些关于w3schools错误信息的例子! - SaidbakR
1
你不应该向任何人指向那个网站。如果你改变了你的答案,包括一个解释,setTimeout只会触发一次,并将链接更改为一个信誉良好的网站,我会再次投票支持你的答案。那个链接也没有明确说明setTimeout只会触发一次。这是一个信息错误的糟糕网站。 - Sean Kendle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接