evt.target.result is empty?

evt.target.result is empty?

本文关键字:empty is result target evt      更新时间:2023-09-26

由于某些原因,在以下代码中,evt.target.result为空。为什么?

function drop(evt) {
    evt.stopPropagation();
    evt.preventDefault();
    var file = evt.dataTransfer.files[0];
    handleFiles(file, evt.target);
}
function handleFiles(file, target) {
    loadSongAnimate();
    var reader = new FileReader();
    // init the reader event handlers
    reader.onloadend = handleReaderLoadEnd;
    // begin the read operation
    reader.readAsDataURL(file);
}
function handleReaderLoadEnd(evt) {
    alert('Passing this: ' + evt.target.result);
    document.getElementById('audioTagId').src = evt.target.result;
}

来自精细手册:

onloadend
在读取完成时调用,无论是否成功。这是在onloadonerror之后调用的。

我怀疑你有错误的情况。添加一个onerror回调,看看reader.error要说什么。您可能希望使用单独的onerroronabortonload回调,而不是onloadend:

onabort
当读取操作中止时调用。

onerror
发生错误时调用。

onload
在读取操作成功完成时调用。

这可能会使处理单个事件变得更容易。


在你的评论中,你说你收到了另一本精细手册中的"错误2":

常量SECURITY_ERR
:2
描述:由于安全原因,无法访问该文件。

所以看起来你得到了一个"拒绝权限"的错误。

我通过本地文件编辑和查看文件://协议。当您在另一个本地文件中引用本地文件时,引用的本地文件中的空白标头会引发安全错误。

经验教训。。。总是上传到服务器进行测试。这会为我节省几个小时的谷歌搜索和大量的头发。