我有一个文本文件,其中包含来自另一个(C ++)应用程序的一些日志记录数据。由于我不想使用某些GUI框架来显示对日志数据的一些可视化分析,我想使用HTML和Javascript来完成这项任务。
我设法通过文件输入<input id="inputfile" type="file"/>
输入数据,然后通过Javascript中的FileReader
读取文件。
我的问题:日志记录文件与HTML + JS文件位于同一目录中,并且文件名始终相同,如果没有用户一遍又一遍地选择相同的文件,读取文件会很不错。
我无法做到这一点。我尝试<object id="data" type="text/plain" data="out.txt"></object>
将日志文件包含在HTML中,然后通过JS读取它,但没有成功。
有关如何避免用户选择并在加载文档时始终读取相同(静态)文件的任何想法? 如果可能的话: (a。)只使用HTML,Javascript和jQuery。 (b。)无需指定绝对文件路径。
使用XMLHttpRequest还有另一个答案。但正如我所说,我需要一个相对路径,我的数据是纯文本。
答案 0 :(得分:0)
出于安全原因,您无法在没有人工干预的情况下选择带有javascript的文件,但是您可以使用隐藏的iframe
包含然后阅读此类文件的内容
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<iframe id="iframeId" src="data.text" frameborder="0" style="display:none"></iframe>
<script>
function readText() {
var iframe = document.getElementById('iframeId');
var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
var text = innerDoc.getElementsByTagName('pre')[0].innerText;
console.log(text);
}
setTimeout(function() {
readText();
}, 50);
</script>
</body>
</html>
&#13;
这将完成这项工作,但我不确定这是否是最佳方式