Javascript 如果源页面发生更改,则自动重新加载iframe

Javascript 如果源页面发生更改,则自动重新加载iframe,javascript,iframe,automation,reload,detect,Javascript,Iframe,Automation,Reload,Detect,我不知道我的代码出了什么问题,即使我更改了目标文件的内容,它仍然不会刷新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){

我不知道我的代码出了什么问题,即使我更改了目标文件的内容,它仍然不会刷新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>

var page='data/apps/App.html',lM;
函数checkModified(){
$.get(页面,函数(a,a,x){
var mod=x.getResponseHeader('last-modified');
如果(lM!=mod){
lM=mod;
document.getElementById(“frame”).src+=“”;
}
}
}
setInterval(checkModified,5000);//每5秒

我想要实现的是,当目标页面发生更改时,iframe将自动重新加载自身,以便将更改显示给用户。这两个页面位于同一个域中。

首先,在
$.get
方法末尾缺少一个右括号“)”

不过,主要问题可能是您的服务器没有发送正确的
Last-Modified
头。我测试的服务器没有发送任何消息,这意味着
mod
未定义。解决方法是检查
内容长度
。这并不理想,因为经过编辑的页面不一定会改变大小,但似乎您可以控制页面,因此您可以确保添加额外的字节以强制刷新

以下是您的
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 += "";
      }
   });
}

你所说的目标页面是什么意思?包含iframe的页面还是iframe中的页面?啊,我明白了-你是指iframe中的页面。首先要检查一下简单的事情:你正在编辑几个字节(不仅仅是更改一个字符),并且你正在服务器上托管它,而不是file://localhost?working 当只有这个“x.getResponseHeader”('Content-Length');“现在的问题是缓存,因为当页面缓存设置时,它有时会打乱文件确切大小的获取。