我想使用一个按钮,而不是此输入框来加载文本文件。当我按下按钮时,我想加载一个名为“me.txt”的文本文件而不显示浏览窗口。 (“me.txt”在同一路径中)。反正有吗?
<input type="file" name="file" id="file">
<script>
document.getElementById('file').onchange = function(){
var file = this.files[0];
var reader = new FileReader();
reader.onload = function(progressEvent){
var lines = this.result.split('\n');
for(var line = 0; line < lines.length; line++){
var wordStr = (lines[line]);
var index = wordStr.indexOf("="); // Gets the first index where a space occours
var word = wordStr.substr(0, index); // Gets the first part
var meaning = wordStr.substr(index + 1);
if (word=="a") {
document.write(meaning);
}
}
};
reader.readAsText(file);
};
</script>
答案 0 :(得分:0)
如果用户没有主动选择文件,您将无法从用户的计算机上读取文件;而且你无法知道用户计算机上该文件的真实路径。浏览器非常正确地阻止了这两件事。
当我按下按钮时,我想加载一个名为“me.txt”的文本文件而不显示浏览窗口。 (“me.txt”在同一条路径中。)
如果您的意思是me.txt
是与此代码运行的HTML页面位于同一路径上的文件,则:
如果您正在使用Web服务器进程并通过http://
或https://
访问该页面,则可以使用简单的ajax请求来读取该文件,例如:
$.get("me.txt").then(function(data) {
// ...use data...
});
如果您刚刚从本地文件系统(file:///
URL)运行,那么使用本地Web服务器进程会更好更多。但是,如果您必须使用file:///
网址,则无法在Chrome中阅读其他本地文件,但您可以在Firefox中使用:
// NOT allowed from file:/// URLs not work in Chrome; is allowed in Firefox
$.ajax({
url: "test.json",
dataType: "text"
}).then(function(data) {
// ...use data here
});
Firefox会在控制台中报告XML解析错误,但也会为您提供数据。