在测试页面' index.html'其内容: Test link
<h2 id="at"></h2>
<div id="a"></div>
<h2 id="bt"></h2>
<div id="b"></div>
<h2 id="ct"></h2>
<div id="c"></div>
<h2 id="dt"></h2>
<div id="d"></div>
<script>
var wraps = [document.getElementById('a'), document.getElementById('b'), document.getElementById('c'), document.getElementById('d')],
titles = [document.getElementById('at'), document.getElementById('bt'), document.getElementById('ct'), document.getElementById('dt')],
arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g'],
l,
i,
r;
for (i = 0; i < 4; i++) {
l = arr.length;
r = Math.floor(Math.random() * l);
titles[i].innerHTML = 'iframe ' + arr[r].toUpperCase();
wraps[i].innerHTML = '<iframe src="' + arr[r] + '.html" frameborder="1" width="600" height="60"></iframe>';
arr.splice(r, 1);
}
</script>
其中a-g.html文件包含示例代码。当首次在IE中打开index.html(我在IE 11中测试)时,它会显示正确的内容。然后刷新此页面,这些iframe&#39; src属性发生了变化,但内容没有变化,只是保持与第一次加载相同。
刷新时,此问题仅存在于IE中。
我找到了解决它的两个选项:
1)首先将iframe添加到页面,然后用js设置它的src;
2)在http serer中禁用缓存
但这两个选项并不好,我想知道有没有其他方法可以解决问题。
一些失败的测试:
答案 0 :(得分:3)
您可以在iframe的网址末尾添加(伪)随机字符串。
这样的事情:
var randValue = (new Date()).getTime();
wraps[i].innerHTML = '<iframe src="' + arr[r] + '.html?cache=' + randValue + '" frameborder="1" width="600" height="60"></iframe>';
<强>更新强>
似乎IE正在从其缓存中提供iFrame的内容。 如果您在IE中检查网络面板,则会显示HTTP status code 304。
您可能希望查看本文Internet Explorer IFRAME Browser History Lost on Reload。这可能会为您提供解决问题的方法。