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 似乎已经实现了这一点,不过:)
我刚试过 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 似乎已经实现了这一点,不过:)