You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取与Index.html同目录下其他文件的lastModified属性?网页图表更新时间显示问题求助

获取同目录下其他文件的lastModified属性

我正在制作一个支持用户查看图表的网页,需要在图表旁加个标签显示它的更新日期。现在的问题是,我只能拿到当前文档的lastModified属性,尝试获取同目录下chart.png的这个属性时,代码返回了undefined。我的代码是这样的:

var file = 'chart.png'
document.write(file.lastModified)
/* document.getElementById("date").innerHTML = document.lastModified; */

解决方案

浏览器端JS出于安全限制,没办法直接读取服务器上其他文件的属性——你之前的代码把字符串'chart.png'当成了文件对象来访问lastModified,自然会返回undefined。这里有几个实用的解决办法:

1. 通过HEAD请求获取响应头的Last-Modified

你可以给目标文件发送一个HEAD请求(只获取响应头,不下载文件内容),从返回的Last-Modified字段里拿到更新时间。代码示例:

// 假设你有一个id为date的元素用来显示时间
fetch('chart.png', { method: 'HEAD' })
  .then(res => {
    const modifyTime = res.headers.get('Last-Modified');
    // 把时间转成易读的本地格式
    document.getElementById('date').textContent = new Date(modifyTime).toLocaleString();
  })
  .catch(err => {
    console.log('获取更新时间失败:', err);
    document.getElementById('date').textContent = '无法获取更新时间';
  });

注意:这个方法需要你的服务器正确配置并返回Last-Modified响应头,如果文件跨域的话还需要处理CORS规则。

2. 服务器端直接注入更新时间

如果你的网页是动态生成的(比如用PHP、Node.js等后端技术),这是最可靠的办法。直接在服务器端读取文件的修改时间,然后把值嵌入到HTML中。举个PHP的例子:

<!-- 在HTML里直接输出时间 -->
<div>图表更新时间:<span id="date"><?php echo date('Y-m-d H:i:s', filemtime('chart.png')); ?></span></div>

这样前端不需要额外请求,直接就能拿到准确的时间,也不会有跨域或者响应头缺失的问题。

3. 利用ETag(备选方案)

有些服务器会返回ETag响应头,部分ETag会包含文件修改时间的哈希值,但这个不是标准格式,解析起来比较麻烦,所以只作为备选,优先用前面两种方法。


内容的提问来源于stack exchange,提问作者user12794441

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 01:27:28