可能吗?现在,我已经完成了实时聊天,在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