【发布时间】:2023-04-03 01:01:01
【问题描述】:
音频文件无法在 Safari 中播放.. 它给出了一个错误。
TypeError: 'undefined' is not a function (evaluating 'myAudio.play()')
这是我的 HTML 代码。
<audio>
<source src="audio/horse.ogg" type="audio/ogg">
<source src="audio/horse.mp3" type="audio/mpeg">
Your browser does not support the audio element.
</audio>
这是我的 JavaScript 代码
myAudio = document.getElementsByTagName('audio')[0];
if (typeof myAudio.loop == 'boolean'){
myAudio.loop = true;
}
else{
myAudio.addEventListener('ended', function() {
this.currentTime = 0;
this.play();
}, false);
}
myAudio.play();
我在 HTML 中只有一个音频标签。
【问题讨论】:
-
看起来您在活动中使用了“this”。它与函数声明之外的不同。尝试做'self = this;'就在外面并引用'self.play()'而不是this.play()。我不知道音频对象那么好。是否应该将“this”放入事件数据中?重读你的意图而不是纯代码。你想重新开始。使用“myAudio.play()”而不是“this.play()”?
-
似乎 document.getElementsByTagName('audio')[0] 正在返回 null。您的 Javascript 是否在 HTML 代码之上定义?它需要位于您的 HTML 下方才能找到音频元素。
-
此代码在 Chorme、Opera、Firefox、Konquer 中运行......
-
@levi nope,它返回对象。
标签: javascript html audio safari