1

您好,我正在使用 javascript 上的 File API 制作我的第一个项目,这是一个简单的程序,它将文件作为输入并在 Div 上显示它的内部代码。我想知道是否有办法让这段代码在没有事件侦听器和事件处理程序的情况下工作。我认为这是主要问题,但我无法弄清楚它是如何工作的:

document.getElementById('byte_content').textContent = reader.readAsBinaryString(blob);

所有mi代码都在这里:

<!DOCTYPE html>
<head>
<html>
<script>
function convert(){
var files = document.getElementById('input').files;
file = files[0];
var reader = new FileReader();
var blob = file.slice(0,20);
    document.getElementById('byte_content').textContent = reader.readAsBinaryString(blob);
}
</script>
</head>
<body>

<input type="file" id="input" name="file" />

<button onclick=convert()>Run script</button>

<div id="byte_range"></div>

</body>

我见过几个这样的例子,但它们都使用类似于这样的代码

 event.target.result
4

1 回答 1

1

你不能。FileReader异步读取文件。这意味着读取发生在后台,并在未来某个未指定的时间点完成;它不会立即返回结果。检索结果的唯一方法是在事件完成时监听事件并执行您想要执行的代码。这根本不是问题,它只需要您将代码放在回调/事件处理函数中,而不是在readAsBinaryString调用之后按程序放置。

代替:

document.getElementById('byte_content').textContent = reader.readAsBinaryString(blob);

你做:

reader.onload = function (event) {
    document.getElementById('byte_content').textContent = event.target.result;
};
reader.readAsBinaryString(blob);

这里的所有都是它的。

于 2013-05-31T07:55:26.897 回答