Javascript 每隔10秒重新加载文本文件的内容

Javascript 每隔10秒重新加载文本文件的内容,javascript,setinterval,readfile,Javascript,Setinterval,Readfile,我有下面的代码,它允许用户选择一个文本文件,然后将内容加载到下面的PRE标记中 加载文本文件 函数readText(即){ if(that.files&&that.files[0]){ var reader=new FileReader(); reader.onload=函数(e){ var contents=e.target.result;//.replace(“\r\n”和“”); contents=contents.replace(//&/g',&;')。replace(//g'

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


加载文本文件
函数readText(即){
if(that.files&&that.files[0]){
var reader=new FileReader();
reader.onload=函数(e){
var contents=e.target.result;//.replace(“\r\n”和“
”); contents=contents.replace(//&/g',&;')。replace(//g',)。replace(//“/g',”); document.getElementById('board').innerHTML=contents; };//结束onload() reader.readAsText(即.files[0]); }//如果html5文件列表支持,则结束 }
这是将加载所选文本文件中的文本的位置。
您可以使用

// 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);
};
然后在输入标签中调用

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


此解决方案的思想是每10秒执行一次readText(THIT)函数(在setInverval函数的帮助下)。但是,如果文本更改,将再次执行setInterval函数。因此,您有一个旧的“触发器”,用于处理“旧”输入;你有一个新的“触发器”用于新的输入。为了避免这种不受欢迎的行为,我们存储触发器的id,并在设置时终止触发器。

为什么不直接使用setInterval?您能让它工作吗?您想每隔10秒重新读取上传文件的内容,以便在文件发生更改时获得更新的内容?是的,确实如此……我不确定,但可能仅使用javascript是不可能的。因为您递归调用onchange事件中的函数,并且当前文件对象始终是第一个存储的文件内容。您好,感谢您的响应。但是,我无法使此代码正常工作。你能提供更多的帮助吗?感谢在脚本标记中添加javascript。此外,将onchange='readText(this)'切换到onchange='startOrRestart(this)'。是否有任何失败输出?好的,最初我在主体中创建了一个新的脚本标记,但是我已经将您的JS粘贴到原始脚本标记中,并更改了onchange。这在chrome中有效,但在IE或FF中无效。IE或FF中是否有一些失败输出?这是FF中的错误,但这会在页面加载后立即发生。“未声明HTML文档的字符编码。如果文档包含US-ASCII范围以外的字符,则在某些浏览器配置中,文档将以乱码文本呈现。页面的字符编码必须在文档或传输协议中声明。”IE中没有控制台错误。