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

时间:2012-10-22 23:58:20

标签: 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){
      var mod = x.getResponseHeader('last-modified');
      if(lM != mod){
         lM = mod;
         document.getElementById("frame").src += "";
      }
   }
}

setInterval(checkModified, 5000); // every 5 seconds
</script>

我想要实现的是当目标页面上有更改时,iframe将自动重新加载,以便可以向用户显示更改。两个页面都位于同一个域中。

1 个答案:

答案 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 += "";
      }
   });
}