有可能用javascript找到文件的最后修改时间吗?


Is it possible with javascript to find file's last modified time?

可能吗?现在,我已经完成了实时聊天,在jquery的帮助下,我连接到.php文件并检查最后修改时间,如果它不像以前那样,我检索消息。如果这在javascript中是可能的,我可能会节省很多资源。

谢谢。

如果服务器为该特定文件发送准确的Last-Modified头,则绝对有可能:

var getMTime = function(url, callback) {
  var xhr = XMLHttpRequest();
  xhr.open('HEAD', url, true); // use HEAD - we only need the headers
  xhr.onreadystatechange = function() {
    if (xhr.readyState === 4 && xhr.status === 200) {
      var mtime = new Date(xhr.getResponseHeader('Last-Modified'));
      if (mtime.toString() === 'Invalid Date') {
        callback(); // dont want to return a bad date
      } else {
        callback(mtime);
      }
    }
  }
  xhr.send();
};
getMTime('url here', function(mtime) {
  if (mtime) console.log('the mtime is:' + mtime.toISOString());
});

简短的回答:除了AJAX +服务器端脚本(在您的情况下,是jQuery + php),没有别的办法

作为客户端脚本,javascript在客户端计算机上运行,因此如果您想要检查其m-time的文件在服务器上,那么使用AJAX和服务器端脚本是正确的。没有别的办法了。

如果您要检查的m-time文件在客户端的计算机上,那么您就不走运了。Javascript被故意设计为防止访问客户端的文件。(它只能访问cookie,这些在客户端计算机上是,然而,因为浏览器(不是任何javascript)将它们加载到其工作环境中。)

也许HTTP ETag头可以用来检查页面是否发生了变化。第一个响应包含ETag,您的客户机将其用于下面的请求。如果页面未被修改,PHP服务器端代码将发送304。

http://en.wikipedia.org/wiki/HTTP_ETag