Javascript evt.target.result是否为空?

Javascript evt.target.result是否为空?,javascript,html5-audio,filereader,Javascript,Html5 Audio,Filereader,出于某种原因,在下面的代码中,evt.target.result为空。为什么呢 function drop(evt) { evt.stopPropagation(); evt.preventDefault(); var file = evt.dataTransfer.files[0]; handleFiles(file, evt.target); } function handleFiles(file, target) { loadSongAnima

出于某种原因,在下面的代码中,
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

在读取完成时调用,无论是否成功。这在
onload
onerror
之后调用

我怀疑您有一个错误条件。添加一个
onerror
回调,看看
reader.error
会说些什么。您可能希望使用单独的
onerror
onabort
onload
回调,而不是
onloadend

onabort

读取操作中止时调用

onerror

发生错误时调用

onload

读取操作成功完成时调用

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


在您的评论中,您说您收到了“错误2”,来自:

常数
安全错误

:2
说明:由于安全原因,无法访问该文件


因此,您似乎收到了“权限被拒绝”错误。

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


吸取的教训。。。始终上传到服务器进行测试。这样可以节省我几个小时的谷歌搜索和大量的头发。

好的,我得到一个错误代码“2”。这似乎是一个通用的全面错误代码,所以我不知道如何才能真正解决它。。。关于从这里看哪里有什么想法吗?@Crossdiver:看起来你得到了“拒绝许可”(基本上是这样),我添加了一些更新(并添加了一个我以前忘记的链接)。@Crossdiver感谢您提供的有用的调试信息。作为记录,我反复犯安全错误,因为我是通过file://而不是http在本地查看我的html。吸取教训!是的,那也是我最后的问题。。。仅仅因为我在本地查看该文件,我就会出现此安全错误#2。很高兴知道!!感谢@Mortensen的编辑。我得到了这个暗示,以后也会照着做…:你应该接受穆的答案,而不是你自己的。