javascript document.lastModified 工作不正常

javascript document.lastModified not working properly

我刚试过 document.lastModified 但它返回的是 系统日期和时间,而不是预期的 html 文件最后修改日期和时间

这是非常奇怪的行为。

我是如何检查的: 我已将命令插入 js,然后我在 运行 时间使用 google chrome 开发工具在调试 interruption/break 点模式下查看文档 属性:每次我将鼠标指向 document.lastmodified 属性 它会随系统时间相应变化并每秒更新一次,无需退出 html 文档,无需将其保存在其他地方,也无需重新加载到浏览器中,无需使用任何编辑器对其进行任何其他操作。

然后我停用了断点,让代码自由执行,它 returns 系统时间也是第一次检查...

这次双重检查让我认为浏览器不再正确解释该命令。

命令 document.lastModified 是某种方式 "broken" 吗?

编辑: 我说的文件是 local 而不是服务器文件,因此不涉及 http 请求或 headers。

..._ _ _...

根据the spec

The Document's source file's last modification date and time must be derived from relevant features of the networking protocols used, e.g. from the value of the HTTP Last-Modified header of the document, or from metadata in the file system for local files.

所以它应该在那里。这是一个 reported bug in Chrome. Searching the Chromium source code 表明确实如此(注意 FIXME 评论):

// http://www.whatwg.org/specs/web-apps/current-work/#dom-document-lastmodified
String Document::lastModified() const
{
    DateComponents date;
    bool foundDate = false;
    if (m_frame) {
        if (DocumentLoader* documentLoader = loader()) {
            const AtomicString& httpLastModified = documentLoader->response().httpHeaderField(HTTPNames::Last_Modified);
            if (!httpLastModified.isEmpty()) {
                date.setMillisecondsSinceEpochForDateTime(convertToLocalTime(parseDate(httpLastModified)));
                foundDate = true;
            }
        }
    }
    // FIXME: If this document came from the file system, the HTML5
    // specificiation tells us to read the last modification date from the file
    // system.
    if (!foundDate)
        date.setMillisecondsSinceEpochForDateTime(convertToLocalTime(currentTimeMS()));
    return String::format("%02d/%02d/%04d %02d:%02d:%02d", date.month() + 1, date.monthDay(), date.fullYear(), date.hour(), date.minute(), date.second());
}

Firefox 和 IE 似乎已经实现了这一点,不过:)