每10秒重新加载一次文本文件的内容

时间:2017-04-05 07:17:54

标签: javascript setinterval readfile

我有以下代码,允许用户选择一个文本文件,然后将内容加载到下面的PRE标签中。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Load text file</title>
    <script type="text/javascript">
		function readText(that){
			if(that.files && that.files[0]){
				var reader = new FileReader();
				reader.onload = function (e) {
					var contents = e.target.result;//.replace("\r\n","<br/>");
					contents = contents.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
					document.getElementById('board').innerHTML= contents;
				};//end onload()
				reader.readAsText(that.files[0]);
			}//end if html5 filelist support
		} 
    </script>
  </head>
  <body>

<input type="file" onchange='readText(this)' />  <hr />

<pre id="board" contenteditable = "true">
This is where the text from the chosen text file will be loaded.
</pre>

</body>
</html>

是否可以每隔10秒读取所选文件的内容?

例如,用户选择文本文件(一次)。 然后代码循环并重新读取内容,并使用可能对文本文件进行的任何更改来更新PRE标记。

我在本地工作,因此无法进行任何服务器脚本编写。

我觉得解决方案可能涉及SETINTERVAL?

感谢davance。

1 个答案:

答案 0 :(得分:0)

您可以使用

j in (1:N_Y)

并在输入标记中调用

// A variable to store the id of the setInterval method
var currentIntervalId = undefined;
// The function that calls your method.
var startOrRestart = function(that) {
    // Clear the 'old' calls to avoid wrong behavior
    if (currentIntervalId !== undefined) clearInterval(currentIntervalId);
    readText(that); // For executing immediately
    // Execute it readText each 10 seconds
    currentIntervalId = setInterval(function() { readText(that); }, 10000);
};

这个解决方案的想法是你每隔10秒执行一次 readText(那)函数(在 setInverval 函数的帮助下)。但是,如果文本更改,则再次执行 setInterval 函数。所以,你有一个旧的“触发器”来处理“旧的”输入;并且您为新输入设置了新的“触发器”。为了避免这种不期望的行为,我们存储触发器的id并在设置时终止触发器。