[HTML]audio音频标签的属性和事件

/ 32,933评论 / 113686阅读 / 2点赞

<audio>是HTML5新加入的用于播放音频的标签,HTML5已经得到广泛的支持,所以我们可以放心使用这个标签;利用它,可以轻松地在网页上播放音频,制作音乐播放器等。下面我们来聊聊它的属性和事件

概念

元数据


属性

兼容性提示

<audio>
  能看到这段话,说明您的浏览器不支持 audio 标签捏
</audio>

controls默认音乐控制面板

<audio controls>
  能看到这段话,说明您的浏览器不支持 audio 标签捏
</audio>
<audio controls="controls">
  能看到这段话,说明您的浏览器不支持 audio 标签捏
</audio>

src音频文件链接

<audio src="./song.mp3" controls>
  能看到这段话,说明您的浏览器不支持 audio 标签捏
</audio>

source资源文件标签


<audio controls>
    <source src="./song.ogg" type="audio/ogg">
    <source src="./song.mp3" type="audio/mpeg">
    能看到这段话,说明您的浏览器不支持 audio 标签捏
</audio>

autoplay自动播放

<audio autoplay>
  您的浏览器不支持 audio 标签捏
</audio>
<audio autoplay="autoplay">
  您的浏览器不支持 audio 标签捏
</audio>

loop开启循环

<audio loop src="./song.mp3">
  您的浏览器不支持 audio 标签捏
</audio>

muted静音

<audio muted src="./song.mp3">
  您的浏览器不支持 audio 标签捏
</audio>

preload预加载方式

<audio preload="auto" src="./song.mp3">
  您的浏览器不支持 audio 标签捏
</audio>

JS操作属性

只读

这部分属性只能读取,不能进行赋值修改

duration音频总时长

const audioDOM = document.getElementById("audio");
if (isNaN(audioDOM.duration)) {
    // 未加载时的操作
} else {
    // 已加载时的操作
}

paused是否暂停

const audioDOM = document.getElementById("audio");
if (audioDOM.paused == true) {  //如果是暂停状态
    audioDOM.play();  //播放音频
} else {              //如果正在播放
    audioDOM.pause(); //暂停
}

ended是否播放完毕

currentSrc音频链接

buffered已缓存范围

let audio = document.getElementById("audio");
let timeRanges = audio.buffered;
let num = 0;
/*获取已加载时长,然后除以歌曲时长,即可得到已加载比例*/
if(timeRanges.length > 0)
    num = parseInt(timeRanges.end(timeRanges.length - 1) * 100 / audio.duration);
if (num > 100)
    num = 100;
else if (num < 0)
    num = 0;

seekable可跳转范围

networkState网络范围

error发生错误

seeking是否移动或跳转播放进度

<audio id="audio" controls src="song.mp3" onseeking="seeking">
  您的浏览器不支持 audio 标签捏
</audio>

<script>
seeking:function(){
    const audioDOM = document.getElementById("audio");
    console.log(audioDOM.seeking);
}
</script>

可读写

这部分属性可以读取,也可以赋值修改

currentTime已播放时长

const audioDOM = document.getElementById("audio");
if (audioDOM.currentTime > 5) {
    audioDOM.currentTime -= 5;
} else {
    audioDOM.currentTime = 0;
}

volume音量

const audioDOM = document.getElementById("audio");
if (audioDOM.volume < 0.9) {
    audioDOM.volume += 0.1;
} else {
    audioDOM.volume = 1;
}

playbackRate播放速度

const audioDOM = document.getElementById("audio");
if (audioDOM.playbackRate >= 2)
    audioDOM.playbackRate = 0.5;
else
    audioDOM.playbackRate += 0.25;

标签属性控制

以下属性都会返回布尔值boolean,可读写设置对应的标签属性是否启用

const audioDOM = document.getElementById("audio");
audioDOM.controls = true;
if(audioDOM.loop == false){
    audioDOM.loop = true;
}

JS操作函数

play()播放

const audioDOM = document.getElementById("audio");
if (audioDOM.canPlay == true) {   //如果资源准备好可以播放
    if (audioDOM.paused == true)  //音频为暂停状态
        audioDOM.play();    //播放
    else
        audioDOM.pause();   //暂停
}

pause()暂停

load()加载


事件

加载生命周期

loadstart开始加载

durationchange时长改变

loadedmetadata元数据加载完毕

loadeddata数据开始加载

progress加载中

canplay可以播放

canplaythrough可以播放整个音频

其他事件

timeupdate已播放时长更新

waiting等待资源中

playing播放中

play播放

pause暂停

ended结束

volumechange音量改变

ratechange播放速率改变

error发生错误

  1. Davidfrify说道:

    prinivil 20 mg lisinopril medicine lisinopril 2.5

  2. uikosUnunk说道:

    На сайте https://animeast.ru/ воспользуйтесь уникальной возможностью посмотреть аниме вместе с друзьями, устроив совместный просмотр. Перед вами огромный выбор вариантов, которые помогут разнообразить досуг и получить от просмотра больше ярких эмоций. Есть как известные аниме, так и новинки, которые понравятся всем любителям этого интересного жанра. Для того чтобы найти интересующий вариант, воспользуйтесь специальным поиском. Изучите каталог аниме, чтобы выбрать оптимальный вариант.

  3. WilliamRen说道:

    https://lisinopril.network/# lisinopril comparison

  4. RandallGuesE说道:

    nolvadex online: tamoxifen and depression – nolvadex for sale amazon

  5. avvezJek说道:

    Желаете смотреть фильмы онлайн в безупречном качестве? Добро пожаловать на Киного! У нас имеется много интересных фильмов, с помощью которых вы после тяжелого дня можете поднять себе настроение. Вы точно забудете о своих проблемах. https://kinogo-fil.net – сайт, который специально создан для поклонников кино различных направлений. Теперь не надо идти в кино и тратить деньги на билеты. Смотреть фильмы у нас можно онлайн 24/7 и совершенно бесплатно. Самые лучшие новинки кино ждут именно вас!

  6. RandallGuesE说道:

    tamoxifen and uterine thickening: tamoxifen moa – alternative to tamoxifen

  7. sandyterrace.com说道:

    buysteriodsonline.com
    멀리서 말발굽이 우르릉거리며 마치 수천의 군대가 오는 듯했다.

  8. Davidfrify说道:

    url lisinopril hctz prescription 40 mg lisinopril lisinopril 18 mg

  9. RandallGuesE说道:

    purchase cytotec: buy cytotec over the counter – buy cytotec pills

  10. asastlak说道:

    Gerchik & Co Group of Companies https://gerchik.co/en is certified through VerifyMyTrade compliance service and provides 5,000 trades on a monthly basis which are then compared to all basic indicators demonstrated by other brokers and liquidity providers.

  11. RandallGuesE说道:

    tamoxifen for sale: tamoxifen for sale – nolvadex 10mg

  12. RandallGuesE说道:

    order generic propecia without prescription: cost propecia without prescription – get propecia online

  13. RonaldSwobe说道:

    http://cytotec.club/# buy cytotec

  14. Davidfrify说道:

    cost of propecia tablets get generic propecia without insurance buying cheap propecia without a prescription

  15. Lesliecheer说道:

    кодирование от алкоголизма алматы https://krasnodar-narkolog.ru/

  16. WilliamRen说道:

    https://cytotec.club/# cytotec online

  17. Как не проиграть все деньги в казино
    Известные казино Лас-Вегаса
    казино онлайн

  18. Davidfrify说道:

    ciprofloxacin generic cipro online no prescription in the usa purchase cipro

  19. RobertMum说道:

    Сайт, где можно заказать красивые раковина тюльпан с пьедесталом по выгодным ценам.

回复 דירה דיסקרטית בראשון לציון 取消回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注