Javascript document.lastModified返回的是当前日期和时间

7

我使用标准的document.lastModified Javascript属性来输出页面的最后修改日期,但它输出的是实际的当前日期和时间。你有什么线索可以解释为什么它会这样行事,而不是输出页面的实际最后修改属性?这种情况在本地(我的机器上)和交付服务器上发布的页面上都会发生。


标准是什么?那是DOM 0级,没有在任何地方标准化。 - adeneo
2
检索文档最后修改日期,如果文档提供了该信息。请检查HTTP头。 - raina77ow
lastModified 是响应头中的一个值。您是否在服务器上动态创建此资源? - srquinn
我相信 document.lastModified 就是最后修改头部的相同时间,如果它被发送了的话,或者如果服务器省略了该头部,则为当前时间。 - dandavis
@adeno - 文档对象的标准Javascript属性“lastModified”。 - michael t
2个回答

8

document.lastModified 通常基于 HTTP 响应头中的 Last-Modified (RFC2822)。Last-Modified 通常与请求头字段 If-Modified-Since 结合使用,用于缓存目的。

就像其他头字段一样,返回的值取决于服务器实现。回复您的 HTTP 请求的服务器软件可能会在 HTTP 响应中返回 Last-Modified 头字段,也可能不会。

在您运行此代码的页面上,服务器只会返回当前日期。此页面也是如此。

但是,在 Dev Tools 中执行 document.lastModified (例如在 https://developer.mozilla.org/en-US/docs/Web/API/document.lastModified 上),您将得到 11/13/2013 09:13:29

在 Firefox 中使用 Firebug 或在 Chrome 中使用 Chrome Dev Tools,您可以在 网络 选项卡中查看检查 HTTP 流量数据。


我认为这可能是问题所在 - 感谢@cbayram提供的信息。 - michael t
2
那么,这个问题的解决方案是什么?我该如何改变服务器软件的行为? - Vicent

0

在我的硬盘上测试了lastModified的本地文件。 Chrome返回当前时间/日期,而不是文件保存时的时间/日期。 Internet Explorer和Firefox返回文件保存的时间/日期。 所以这是Chrome的一个bug。 获取页面检查userAgent中的Chrome并警告用户或禁用代码。

引用

if(navigator.userAgent.indexOf("Chrome/")>0){ alert("Chrome bug.\n请使用其他浏览器。\n一个可以工作的。"); }

引用

lastModified的其他问题。 它返回一个字符串而不是日期对象。因此无法使用date.getFullYear() 该字符串采用美国格式而不是标准格式d/mm/yyyy。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接