我不知道我的代码有什么问题,即使我更改了目标文件的内容,它仍然不会刷新iframe。
<script type="text/javascript">
var page = 'data/apps/<? echo $_SESSION['name']; ?><? echo $_SESSION['last']; ?>App.html', lM;
function checkModified(){
$.get(page, function(a,a,x){
var mod = x.getResponseHeader('last-modified');
if(lM != mod){
lM = mod;
document.getElementById("frame").src += "";
}
}
}
setInterval(checkModified, 5000); // every 5 seconds
</script>
我想要实现的是当目标页面上有更改时,iframe将自动重新加载,以便可以向用户显示更改。两个页面都位于同一个域中。
答案 0 :(得分:1)
首先,$.get
方法结尾处有一个缺少右括号“)”。
但主要问题可能是您的服务器没有发送正确的Last-Modified
标头。我测试过的服务器没有发送任何内容,这意味着mod
未定义。解决方法是检查Content-Length
。它并不理想,因为编辑过的页面不一定会改变大小,但似乎您可以控制页面,这样您就可以确保添加额外的字节来强制刷新。
以下是您更新的checkModified
功能应该有效:
function checkModified() {
$.get(page, function(a, b, x) {
var mod = (x.getResponseHeader('Last-Modified')) ? x.getResponseHeader('Last-Modified') : x.getResponseHeader('Content-Length');
if (lM != mod) {
lM = mod;
console.log('Fetched');
document.getElementById("frame").src += "";
}
});
}