我一直到处都是,但是找不到重复读取与Chrome兼容的本地文本文件(与js和html文件位于同一文件夹中)的解决方案。
我需要不断读取文件进行更新,另一个程序会自动更新该文件,我不知道如何进行更新。这只是一个普通的text.txt文件。
我在这里已经阅读了很多关于它的问题/答案,但是到目前为止,我什么都没找到。有人可以帮忙吗?
edit:我的意思是也没有节点,只有香草JS。
答案 0 :(得分:1)
您可以通过starting Chrome with it's security features disabled为本地文件启用XmlHttpRequest。这不是理想的解决方案,但这是无需运行某种服务器即可自动执行所需操作的唯一方法。使用Node监视文件中的更改并将数据通过WebSocket推送到浏览器将是处理此问题的正确方法。
或者,您可以使用FileReader API打开此本地文件,但是您需要首先通过const text = "help me on monday, january 8 take the dog out";
const weekdayRegex = /\b((mon|tues|wed(nes)?|thur(s)?|fri|sat(ur)?|sun)(day)?)\b/;
const monthThenDayRegex = /(jan(uary)?|feb(ruary)?|mar(ch)?|apr(il)?|may|jun(e)?|jul(y)?|aug(ust)?|sep(tember)?|oct(ober)?|nov(ember)?|dec(ember)?) *\d{1,2}(th|nd|st|rd){0,1}/;
const commaSeperated = new RegExp(weekdayRegex.source + " *,{0,1} *" + monthThenDayRegex.source);
expect(commaSeperated.test(text)).toEqual(true);
expect(text.match(commaSeperated)[0]).toEqual('monday, january 8');
expect(text
.match(commaSeperated)[0]
.match(monthThenDayRegex)[0]).toEqual('january 8');
元素手动选择它。
<input type="file">
function readInputFile(event) {
let file = event.target.files[0];
if (!file) {
return;
}
let reader = new FileReader();
reader.addEventListener('load', event => {
let content = event.target.result;
alert(content);
});
reader.readAsText(file);
}
document.getElementById('datafile').addEventListener('change', readInputFile, false);
答案 1 :(得分:0)
在这种情况下,我认为您可能会对“本地”文件感到困惑。
本地文件将加载诸如file://
之类的网址,或者从以表格形式输入的文件中选择。
.html和.css旁边的文件不是本地文件,它是Web服务器上用于托管.html的托管文件。您将使用指向您域的相对路径来引用它,例如'/file.css'
Node将具有更多选择,因为它可以与fs(文件系统)库中的同步读取和访问本地文件。
您需要做的是像对待Internet上的其他文件一样对待文件,然后以相同的方式下载文件。然后,稍后在需要检查更新时再次下载。重复。