You need to enable JavaScript to run this app. JavaScript 获取文件最后修改日期的函数无输出问题
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript 获取文件最后修改日期的函数无输出问题

无输出问题排查

按代码执行顺序,问题点如下:

  • 变量名大小写不匹配的致命语法错误
    JavaScript 是大小写敏感的语言,send()函数内部声明的请求实例变量名为xhttp,但后续调用open、send方法时全部误写为xmlhttp,代码执行到该行会直接触发ReferenceError,整个脚本运行中断,根本走不到后续的alert逻辑,自然没有任何输出。
  • 文件时间取值逻辑错误
    即使修正了变量名,原代码从xmlDoc.lastModified读取修改时间的逻辑也不成立:responseXML是浏览器将返回文本解析后生成的DOM Document对象,这里读取到的lastModified实际是当前加载的HTML页面的修改时间,和请求的file.xml完全无关。要获取目标文件的最后修改时间,必须通过XMLHttpRequest实例的getResponseHeader方法,读取HTTP响应头里的Last-Modified字段值。
  • 同步请求的兼容限制
    原代码给open方法传第三个参数false开启同步XHR请求,现代浏览器出于性能考虑,会对主线程的同步XHR做拦截或警告,部分场景下会直接阻断请求流程,导致逻辑无法正常执行。

修正后的可运行代码

function send() {
    const xhttp = new XMLHttpRequest();
    // 改为异步请求模式,规避主线程同步请求的拦截限制
    xhttp.open("GET", "file.xml", true);
    // 绑定请求完成的回调,在请求成功返回后执行后续逻辑
    xhttp.onload = function() {
        myfunction(xhttp);
    };
    xhttp.send();
}

function myfunction(xhr) {
    // 从HTTP响应头读取目标文件的最后修改时间
    const fileLastModified = xhr.getResponseHeader("Last-Modified");
    alert(fileLastModified);
}

注意:如果部署在本地文件系统(file://协议)下测试,部分浏览器不会返回静态文件的Last-Modified响应头,需要将代码部署在HTTP服务(本地静态服务器即可)环境下测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.07 14:24:01