javascript - <Audio> 通过 Javascript 回退

标签 javascript html embed html5-audio

我想了解如何实现 HTML5 <audio>使用 Javascript 回退...

即我的页面上有一个 div,我动态地向其附加 <embed>当前单击“播放音频”链接时的标记.. 即我目前使用

function playSound(audioUrl)
{
var x = document.getElementById("playAudio");
x.innerHTML = '<EMBED src="'+audioUrl+'" autostart=true loop=false volume=100 hidden=true>';
} 

我想使用 HTML5 实现相同的功能 <audio>标签,但希望在不支持 HTML5 音频标签时回退嵌入。鉴于音频 URL 是动态的,我如何使用 JS 实现相同的功能?

我的意图是它应该适用于较旧和较新的浏览器..比如 IE6,7,8; FF 3,4; Chrome ; MAC 上的 Safari 4,5,iPad 上的 Safari..

最佳答案

你可以使用 Modernizr检测音频支持。

如果您不想为了简单的事情而包含该库,那么应该这样做...

var audioSupport = document.createElement('audio').hasOwnProperty('src');

jsFiddle .

那就是……

function playSound(audioUrl) {
    var audioSupport = document.createElement('audio').hasOwnProperty('src'),
        x = document.getElementById("playAudio");

    if (audioSupport) {
        var audio = document.createElement('audio');
        audio.src = audioUrl;
        x.appendChild(audio);
        audio.play();
    } else {
        // Or you could use proper DOM methods...
        x.innerHTML = '<EMBED src="' + audioUrl + '" autostart=true loop=false volume=100 hidden=true>';
    }
}

jsFiddle .

关于javascript - <Audio> 通过 Javascript 回退,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6251638/

相关文章:

javascript - 在 php 循环中单击复选框时将 1 添加到输入值

javascript - safari 中 float 元素父容器的宽度

css - Twitter Bootstrap 3 导航栏

php - 从 Facebook 的 Graph API 嵌入视频的最佳方式是什么?

css - 在 Flex 3 中使用 CSS 嵌入影片剪辑

html - 如何在 github markdown 中包含 jsfiddle(或等效的)?

javascript - 如何存储每个浏览器选项卡唯一的 ID?

javascript - Angular 服务和观察变量

javascript - 菜单打开时更改所选选项的文本

javascript - 预填充并提交隐藏表单