当页面位于本地文件系统上时,有没有办法检查页面是否已更改(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/