如果HTML文件已更新,则执行JavaScript 2
从中我得到了一个很好的答案,请参见下面的代码。 我遇到了一个问题 此脚本正在自我检查。代码位于index.html中,它将检查index.html上是否有更改。如果有更改,它应该刷新自己。这一切都是可行的,但它保持不变 因此,如果您更改一次文件,它将循环显示“站点已被修改”并刷新。安博迪知道如何解决这个问题吗如果HTML文件已更新,则执行JavaScript 2,javascript,ajax,jquery,http-headers,Javascript,Ajax,Jquery,Http Headers,从中我得到了一个很好的答案,请参见下面的代码。 我遇到了一个问题 此脚本正在自我检查。代码位于index.html中,它将检查index.html上是否有更改。如果有更改,它应该刷新自己。这一切都是可行的,但它保持不变 因此,如果您更改一次文件,它将循环显示“站点已被修改”并刷新。安博迪知道如何解决这个问题吗 <html> <head> <script type="text/javascript" src="http://code.jquery.com/
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<script type="text/javascript">
var checkUrl="index.html";
var firstCheck = false;
window.setInterval("checkForUpdate()", 1000);
function checkForUpdate() {
$.ajax(checkUrl, {
ifModified : true,
type : 'HEAD',
success : function (response) {
if(firstCheck === false) {
firstCheck = true;
return;
}
$('#output').html('the site has been modified');
}
});
}
</script>
</head>
<body>
<div id="output">Not Modified</div>
</body>
</html>
var checkUrl=“index.html”;
var firstCheck=false;
setInterval(“checkForUpdate()”,1000);
函数checkForUpdate(){
$.ajax(检查URL{
如果修改:正确,
类型:'头',
成功:功能(响应){
if(firstCheck==false){
firstCheck=true;
返回;
}
$('#output').html('网站已被修改');
}
});
}
未修改
您的代码源承认它不起作用,并提供了替换解决方案:
var checkUrl="test.txt";
window.setInterval("checkForUpdate()", 1000);
var pageLoad = new Date().getTime();
function checkForUpdate() {
$.ajax(checkUrl, {
type : 'HEAD',
success : function (response, status, xhr) {
if(firstCheck === false) {
firstCheck = true;
return;
}
// if the server omits the 'Last-Modified' header
// the following line will return 0. meaning that
// has not updated. you may refine this behaviour...
var lastModified = new Date(xhr.getResponseHeader('Last-Modified'))
.getTime();
if(lastModified > pageLoad) {
$('#output').html('the site has been modified');
}
}
});
}
如果尝试对请求类型使用
GET
或POST
而不是HEAD
,会发生什么情况?暗示头部可能不完全支持如果我删除if(firstCheck==false){firstCheck=true;return;}