我有以下代码,允许用户选择一个文本文件,然后将内容加载到下面的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, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
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。
答案 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并在设置时终止触发器。