Safari - HTML5 音频

发布于 2024-11-27 12:57:28 字数 233 浏览 1 评论 0原文

我正在使用 javascript 用源信息动态填充音频标签。在 Chrome 中工作正常,但在 Safari 中,音频标签内的源信息发生变化,但它播放的是同一首歌曲。关于为什么会发生这种情况有什么想法吗?

http://www.chicagowebguru.com/HTML5Player/

I'm using javascript to dynamically populate the audio tag with source info. Works fine in Chrome, but in Safari the source info changes within the audio tag and yet it plays the same song. Any ideas as to why this would be happening?

http://www.chicagowebguru.com/HTML5Player/

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

泪是无色的血 2024-12-04 12:57:28

在 Safari 中,当您更改源时,您还必须在音频播放器上调用 .load() 以使其实际加载新源。

其他浏览器似乎不需要这个。

In Safari, when you change the source, you also have to call .load() on the audio player to get it to actually load the new source.

Other browsers don't need this it seems.

止于盛夏 2024-12-04 12:57:28

您是否尝试过重新创建节点?

document.removeChild(document.getElementById("audio-player");

var dynamicAudio = document.createElement("audio");
dynamicAudio.name = "audio-player";
dynamicAudio.id = "audio-player";
var dynamicSound1 = document.createElement("source");
var dynamicSound2 = document.createElement("source");
var dynamicSound3 = document.createElement("source");
dynamicSound1.src = "http://www.chicagowebguru.com/audio/RainbowConnection.mp3";
dynamicSound2.src = "http://www.chicagowebguru.com/audio/RainbowConnection.ogg";
dynamicSound3.src = "http://www.chicagowebguru.com/audio/RainbowConnection.wav";
dynamicAudio.appendChild(dynamicSound1);
dynamicAudio.appendChild(dynamicSound2);
dynamicAudio.appendChild(dynamicSound3);

refNode = document.getElementById("message-container");
document.body.insertBefore(dynamicAudio,refNode.nextSibling);

或者你可以使用 jQuery

Have you tried recreating the node?

document.removeChild(document.getElementById("audio-player");

var dynamicAudio = document.createElement("audio");
dynamicAudio.name = "audio-player";
dynamicAudio.id = "audio-player";
var dynamicSound1 = document.createElement("source");
var dynamicSound2 = document.createElement("source");
var dynamicSound3 = document.createElement("source");
dynamicSound1.src = "http://www.chicagowebguru.com/audio/RainbowConnection.mp3";
dynamicSound2.src = "http://www.chicagowebguru.com/audio/RainbowConnection.ogg";
dynamicSound3.src = "http://www.chicagowebguru.com/audio/RainbowConnection.wav";
dynamicAudio.appendChild(dynamicSound1);
dynamicAudio.appendChild(dynamicSound2);
dynamicAudio.appendChild(dynamicSound3);

refNode = document.getElementById("message-container");
document.body.insertBefore(dynamicAudio,refNode.nextSibling);

or you could use jQuery maybe

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文