【问题标题】:audio.currentTime doesn't work in IE9audio.currentTime 在 IE9 中不起作用
【发布时间】:2011-06-23 00:00:03
【问题描述】:

我真的不明白为什么下面的代码似乎可以在除 IE9 之外的所有浏览器中工作:

    var audio = $("audio.laser").get(0);
    if (audio != null && audio.canPlayType) {
        audio.pause();
        audio.currentTime = 0;
        audio.play();
    }

奇怪的是,它在“audio.currentTime = 0”处冻结,说“currentTime is undefined”。

【问题讨论】:

  • 这段代码在什么时候被调用?此时是否已触发loadedmetadata 事件?
  • 你能贴出调用这段代码的脚本吗?
  • 感谢您指出加载元数据事件。我检查并没有在 IE 中触发该事件。我发现这是因为不支持我使用的 WAV 格式。我在播放声音之前添加了对音频持续时间的检查,如下所示:“audio.duration >= 0”(引用 Travis Powell 发表的文章:“duration - 获取当前媒体资源的持续时间,以秒为单位,a如果持续时间不可用,则为 NaN 值,如果媒体资源正在流式传输,则为 Infinity。")。有用。 :) 谢谢!

标签: internet-explorer html audio internet-explorer-9 html5-audio


【解决方案1】:

不遵守标准是网络重罪,IE9 是屡犯。音频对我来说似乎是只读的。

仅支持此处的内容: http://msdn.microsoft.com/library/ff975061.aspx

【讨论】:

  • 链接页面似乎确认 currentTime 存在。 "获取或设置当前播放位置,以秒为单位。"
  • 感谢您的链接,我注意到我收到了“W3CException_DOM_INVALID_STATE”异常,意思是“未选择媒体源”......这怎么可能? HTML 代码是:
  • 我清楚地选择了它...
【解决方案2】:

有几件事可以尝试替换:

audio.currentTime = 0;

audio.currentTime = 0.1;

如果这仍然给您同样的错误,您可以尝试将其替换为:

audio.load();

但请注意 load() 不能很好地处理“结束”事件。这个原因我不明白。

【讨论】:

    猜你喜欢
    • 2012-03-05
    • 2018-04-29
    • 2012-02-09
    • 2012-08-02
    • 2014-05-04
    • 2011-07-29
    • 2015-10-08
    • 2013-10-29
    • 2017-08-27
    相关资源
    最近更新 更多