<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<!-- JQuery code -->
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<!-- Script which refreshes each element every 5 seconds -->
<script>
setInterval(reloadElements, 5000);
function reloadElements() {
$('#refresh').load(location.href+' #refresh');
}
</script>
</head>
<body>
<p id="refresh">
This is some paragraph text. <br />
<ul>
<li> List item one. </li>
<li> List item two. </li>
</ul>
</p>
</body>
</html>
此HTML文件将始终位于客户端本地。
我编写此脚本的原因是我的页面可以自动反映对文件所做的更改(即我不需要手动刷新页面)。我有一个C ++应用程序写入此HTML文件(仅更改<p id="refresh">
标记的内容。)
我的测试机器运行Windows XP 32位。
当我使用--allow-file-access-from-files
参数运行Chrome并且没有任何命令行参数并使用文本编辑器修改.html文件时,更改未显示在浏览器上。
仅修改段落文本(即反映更改)。修改列表元素或在列表后添加任何内容都不会反映出来。
正如预期的那样,在打开网页并使用文本编辑器修改.html文件后,当5秒间隔到期时,更改会反映在浏览器上。
我目前只需要支持Internet Explorer,Google Chrome和Mozilla Firefox。
为什么会出现这种差异?我究竟做错了什么?有没有更好的方法来实现我想要的目标?
PS:这恰好是我的第一个网页代码。
由于 squint 的有用建议,我修复了Firefox和Internet Explorer问题(请参阅下面的评论)。我基本上将<p>
元素的内容放在一个单独的.html文件中,并修改了JQuery加载以加载该文件。不知道这有什么不同。
答案 0 :(得分:0)
我想你错过了document.ready
<script>
$(document).ready(function(){
setInterval(reloadElements, 5000);
function reloadElements() {
$('#refresh').load(location.href+' #refresh');
}
});
</script>
document.ready
确保只有在文档中的元素准备就绪后才能执行代码。