javascript - 使用 JavaScript 检测文件系统上的页面何时发生更改

标签 javascript jquery html ajax filesystems

当页面位于本地文件系统上时,有没有办法检查页面是否已更改(file:/// 不是 http://https://)?

有答案here使用 AJAX 检查 header 中的“Last-Modified” header ,但使用文件协议(protocol)时不会返回该 header 。

以下是本地测试时 Firefox 返回的 header :

// headers
Content-Type: text/xml
Content-Length: 20941

更新:
看起来响应已设置为文件,并且响应上有一个 LastModified 属性。我添加了一个答案。

最佳答案

根据您在评论中的回复,我将使用某种形式的缓存页面。

检查this answer以字符串形式获取页面的当前内容并缓存它/它的哈希值。从那里,对当前页面执行 AJAX 请求并比较内容/哈希值。如果它们不匹配,那么您可以重新加载页面。

let contents = document.documentElement.outerHTML;
let frequency = 5000; // How often to check for changes (ms)

setInterval(() => {
    let xmlhttp = new XMLHttpRequest();

    xmlhttp.addEventListener("load", (res) => { 
        if(res.responseText != contents)
            window.location.reload(true);
    });

    xmlhttp.open("GET", window.location.href);
    xmlhttp.send();
}, frequency);

关于javascript - 使用 JavaScript 检测文件系统上的页面何时发生更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53688744/

相关文章:

javascript - Ajax 调用循环,Ajax jQuery

html - 列表项在 IE 和 Chrome 上无明显原因上移

html - 如何在不使用表格的情况下将 4 Div 放置在 2x2 Passion 中?

javascript - 按下按钮时动态加载 iframe

javascript - 所有反斜杠将从本地文件路径中删除

javascript - 通过AJAX调用Perl脚本打印文本文件的内容

javascript - 瞬间时区 : UTC offset difference

如果 li 有 child ,jQuery 会杀死链接

javascript - 功能恰好影响一半的预期元素

javascript - 如果... 则增加一个值