如何从本地运行的html + javascript页面访问和读取本地文件

gyu*_*isc 9 html javascript html5

我想写一个小的html文件,可以在本地运行并操作我的计算机上的一个小文本文件.我的要求是:

  • 文本文件位于我的计算机上的目录中(test.txt)
  • Html文件与文本文件(test.html)位于同一目录中
  • 我想在html中使用javascript来读写文本文件.

这有可能吗?如果是,我如何使用javascript读取和写入我的文本文件?

Jar*_*ish 9

正如在Itay Moav的回答中所讨论的那样,使用本地HTML文件写入本地文件可能会成为一个问题,而无需在提升的权限模式下运行并具有其他Javascript功能(允许您保存本地文件).

但是,完全可以从HTML文件访问本地文件.下面是一些示例代码.

mytext.txt

My local text file
Run Code Online (Sandbox Code Playgroud)

local.html

<html>
<head>
<base href="file:///C:/path/to/your/folder/"/>
<script>
window.onload = function(){
    var iframe = document.createElement('iframe');
    iframe.id = 'iframe';
    iframe.style.display = 'none';
    document.body.appendChild(iframe);
    iframe.src = 'mytext.txt';
    setTimeout(function(){
        var text = document.getElementById('iframe').contentDocument.body.firstChild.innerHTML;
        alert(text);
    }, 1000);
}
</script>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

这将在html页面加载后1秒发出警报(以允许首先加载iframe),并将包含mytext.txt文件中的内容.

注意,如果它是纯文本,Firefox将用PRE元素包装它,这就是我做的原因firstChild.另外,请注意使用BASE元素,该元素使用您的文件指向您的本地目录.


小智 9

Jared给出的例子很好.然而,设置未知的观看时间并不吸引人.而是将一个onload事件附加到iframe,调用一个函数来读取文本文件的内容,并尽快做任何事情.

这是一个修改过的例子:

<html>
<head>
<script>
function readfile() {
    alert(document.getElementById('iframe').contentDocument.body.firstChild.innerHTML);
}
</script>
</head>
<body>
<iframe id='iframe' src = 'test.txt' onload='readfile()'> </iframe>
<h1>Hello World!</h1>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

文件test.txt off当然必须与上面的html文件本身存在于同一目录中.