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的编辑。我得到了这个暗示,以后也会照着做…:你应该接受穆的答案,而不是你自己的。