1

我在尝试使用 HTML5 API(也与 SoundManager2)时遇到问题。当试图找到一首歌曲的持续时间以便我可以在歌曲播放时制作一个进度条时。我一直在控制台中遇到以下错误:

Uncaught Error: IndexSizeError: DOM Exception 1

这是用于获取进度的代码:

<a href="/uploads/song_71.mp3" class="song" id="song_71"></a>
<audio id="song" preload="auto" src=""></audio>

<script>

  var song = document.getElementById("song");
  song.addEventListener("timeupdate", function(){
    var end = this.seekable.end(0),
        curr = this.currentTime,
        prog = (curr / end) * 100;

    console.log(this.currentTime, this.duration)
  })

  song.play()

  document.getElementById("play_song").addEventListener("click", function(e){    
    var song_file = this.href;
    song.src = song_file
    song.play()

    if(e){ e.preventDefault(); }
    return false;
  })

</script>
4

1 回答 1

0

这令人难以置信的令人沮丧,因为我在网上找不到任何帮助,所以我决定发布我的答案。我确信这可能是我遇到的一个非常具体的问题,但如果其他人遇到这个问题也不会感到惊讶。我正在使用 Flask developmentemnt 服务器,它没有为 MP3 发送正确的 headers/mimetypes。看到我正在使用这个快捷功能

@app.route('/uploads/<path:filename>')
def download_file(filename):
    return send_from_directory(app.config['UPLOAD_FOLDER'], filename)

一旦我将文件移动到实时服务器(我让 Apache 直接提供静态文件),错误就被消除了。希望这可以帮助其他一些可怜的灵魂:-)

于 2013-06-19T04:41:13.940 回答