<audio>是HTML5新加入的用于播放音频的标签,HTML5已经得到广泛的支持,所以我们可以放心使用这个标签;利用它,可以轻松地在网页上播放音频,制作音乐播放器等。下面我们来聊聊它的属性和事件
目录
概念
元数据
- 歌曲元数据是帮助用户理解音乐类型的东西,这样他们就可以决定是否要听这首歌
- 它可以包含多种类型的信息,如音乐时长、类型、标题、艺术家、专辑名称、评级、内容、描述、演员、导演、对歌曲的评论、流派、标签、跟踪器编号等。
- 如果歌曲没有音乐元数据信息,可以通过在线网站或元数据软件手动或自动添加
属性
兼容性提示
- 可以在<audio></audio>标签中间写文字,当浏览器不支持<audio>时,就会显示这串文字(注意只是显示里面的文字,并不会显示标签<audio></audio>)。
- 示例:
<audio>
能看到这段话,说明您的浏览器不支持 audio 标签捏
</audio>
controls默认音乐控制面板
- 如果出现该属性,则将显示浏览器默认的音乐控制面板(不同浏览器不一样)
- 取值只有一个,即 controls="controls" 可简写为 controls
- 如果写 controls="none" 等其他值,也等同于显示音乐控制面板
- 示例1:
<audio controls>
能看到这段话,说明您的浏览器不支持 audio 标签捏
</audio>
- 示例2:
<audio controls="controls">
能看到这段话,说明您的浏览器不支持 audio 标签捏
</audio>
src音频文件链接
- src属性用于指定音频文件的链接
- 注意:
- 浏览器支持的音频文件格式可能各不相同,可能有mp3,wav,ogg,m4a,aac ......
- 综合考虑兼容性和文件大小的话,建议使用mp3
- 具体浏览器是否支持,可以调用后面介绍的canplaytype(type)函数检查。
- 示例:
<audio src="./song.mp3" controls>
能看到这段话,说明您的浏览器不支持 audio 标签捏
</audio>
source资源文件标签
- 除了上面的src属性可以指定资源文件链接,还可以在audio标签内写多个source标签来指定资源文件标签,但并不是说会顺着循环播放,而是浏览器会选择第一个支持的格式来进行播放。
- 示例:
<audio controls>
<source src="./song.ogg" type="audio/ogg">
<source src="./song.mp3" type="audio/mpeg">
能看到这段话,说明您的浏览器不支持 audio 标签捏
</audio>
autoplay自动播放
- 如果存在该属性,则音频在加载就绪后就会自动开始播放
- 取值只有一个:autoplay="autoplay",可简写为 autoplay
- 如果写 autoplay="none" 等其他值,等价于启用自动播放
- 因此如果需要控制,建议使用 js 调用 后面介绍的 play() 函数实现
- 注意:话是说可以自动播放,但目前很多浏览器由于用户体验,节省流量等原因,在一开始进入页面后并不会让音频自动播放,而是需要用户和页面有交互之后(即进行了点击(单击 onclick,双击 ondblclick,按下 onmousedown,松开 onmouseup,右击 oncontextmenu 等),键盘输入((按下 onkeydown,松开 onkeyup 等))等操作)才有用。具体则要看浏览器各自的规则。
- 在交互前使用autoplay可能会报错:DOMException: play() failed because the user didn't interact with the document first。
- 部分事件不算用户发生了交互(onmouseenter,onmouseleave,onmouseover,onmouseout)
- 对于<video>标签,可以设置muted静音后可以自动播放,但<audio>不行
- 解决办法:显然我们需要用户的交互动作,那么就需要在播放之前引导用户进行交互,可以是一个欢迎弹窗,教程弹窗等引导点击关闭。或是提供播放按钮,让用户点击后才进行播放。
- 示例1:
<audio autoplay>
您的浏览器不支持 audio 标签捏
</audio>
- 示例2:
<audio autoplay="autoplay">
您的浏览器不支持 audio 标签捏
</audio>
loop开启循环
- 有这个属性的时候,就会循环播放指定的音频文件
- 取值只有一个,即 loop="loop" ,可简写为 loop
- 如果写 loop="none" 等其他值,等价于开启循环
- 示例:
<audio loop src="./song.mp3">
您的浏览器不支持 audio 标签捏
</audio>
muted静音
- 存在这个属性时,则默认静音
- 注意只是默认静音,可以通过控制面板或js调节音量来取消静音
- 取值只有一个,即 muted="muted" ,可简写为 muted
- 示例:
<audio muted src="./song.mp3">
您的浏览器不支持 audio 标签捏
</audio>
preload预加载方式
- 设置音频的预加载方式
- 取值有三个:
- preload="auto",自动加载,页面加载后加载整个音频
- preload="metadata",自动加载,页面加载后只加载元数据
- preload="none",不自动加载
- preload="",等价于 auto
- 注意:autoplay属性优先级高于preload,若指定autoplay,则会忽略此属性,浏览器将自动加载音频以供播放。
- 示例:
<audio preload="auto" src="./song.mp3">
您的浏览器不支持 audio 标签捏
</audio>
JS操作属性
只读
这部分属性只能读取,不能进行赋值修改
duration音频总时长
- 双精度浮点数double。返回音频的总时长,单位为秒。
- 注意:如果音频元数据还没加载好,则这个值会是NaN
- 示例:
const audioDOM = document.getElementById("audio");
if (isNaN(audioDOM.duration)) {
// 未加载时的操作
} else {
// 已加载时的操作
}
paused是否暂停
- 布尔值boolean。如果音频是暂停状态,则返回 true ;否则返回 false
- 示例:
const audioDOM = document.getElementById("audio");
if (audioDOM.paused == true) { //如果是暂停状态
audioDOM.play(); //播放音频
} else { //如果正在播放
audioDOM.pause(); //暂停
}
ended是否播放完毕
- 布尔值boolean。音频播放完毕时,返回true,否则返回false
- 如果音频并没有开启loop循环,则可用这个属性判断是否播放完成。当然播放完毕时,会触发ended事件
currentSrc音频链接
- 字符串String。返回正在播放或加载的音频url链接,即浏览器在source标签里选择的文件。
buffered已缓存范围
- TimeRanges对象。表示浏览器已经缓存的音频范围
- buffered.length,完全加载时为1,但还没有加载完成之前,它可能是0(为0即为未加载或者加载错误),可能是2,3,4(已经加载这么多段,但还没有加载完成)等等
- buffered.start(index),返回浮点数,表示缓存的第index这一段的开头是第几秒。
- buffered.end(index),返回浮点数,表示缓存的第index这一段的结尾是第几秒。
- 注意:
- 调用start(index) 和end(index)之前,你需要判断length是否大于0,否则容易报错。
- 如果想以此做加载进度条,调用end(0)是不行的,因为在完全加载之前,它表示的是第一段加载的长度。建议这样写:buffered.end(buffered.length - 1)
- 示例(获取已加载的比例):
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可跳转范围
- TimeRanges对象。同buffered。
networkState网络范围
- 获取音频的网络范围
- 取值:
- 0:NETWORK_EMPTY,音频尚未初始化
- 1:NETWORK_IDLE,浏览器已选择好采用什么编码格式来播放媒体,但尚未建立网络连接
- 2:NETWORK_LOADING,浏览器正在加载
- 3:NETWORK_NO_SOURCE,未找到音频资源
error发生错误
- MediaError对象。当发生错误时,会产生一个对象。如果目前没有错误,则返回null
- MediaError构成:
- code 错误码:
- MEDIA_ERR_ABORTED,音频加载加载过程中由于用户操作而被终止
- MEDIA_ERR_NETWORK,确认音频资源可用,但是加载时出现网路错误,音频加载被终止
- MEDIA_ERR_DECODE,确认音频资源可用,但是解码发生错误
- MEDIA_ERR_SRC_NOT_SUPPORTED,音频格式不被支持或者资源不可用
- message 错误描述信息
- code 错误码:
seeking是否移动或跳转播放进度
- 布尔值boolean,如果用户移动或者跳转了播放进度,则触发seeking事件,这个值会返回true
- 即使暂停状态,跳转和移动播放进度条也会触发。
- 示例:
<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已播放时长
- 双精度浮点数double,返回已经播放的时长,单位为秒。可以给它赋值修改,来实现快进,回退,跳转等功能
- 取值应在 [0, (duration)]
- 示例:
const audioDOM = document.getElementById("audio");
if (audioDOM.currentTime > 5) {
audioDOM.currentTime -= 5;
} else {
audioDOM.currentTime = 0;
}
volume音量
- 双精度浮点数double,返回当前音量大小,默认为 1,值为0时为静音。可修改它来增大,降低音量
- 取值应在 [0, 1]
const audioDOM = document.getElementById("audio");
if (audioDOM.volume < 0.9) {
audioDOM.volume += 0.1;
} else {
audioDOM.volume = 1;
}
playbackRate播放速度
- 双精度浮点数double,返回当前播放速度,默认为 1,可以通过修改它来调速。
- 最大速度根据浏览器不同而可能不同,建议在2倍速以内
- 取值建议在 [0, 2]
- 2:2倍速
- 1.5:1.5倍速
- 1:正常速度
- 0.5:半速
- 0:不动,但仍然在播放状态
- 示例:
const audioDOM = document.getElementById("audio");
if (audioDOM.playbackRate >= 2)
audioDOM.playbackRate = 0.5;
else
audioDOM.playbackRate += 0.25;
标签属性控制
以下属性都会返回布尔值boolean,可读写设置对应的标签属性是否启用
- controls控制面板
- autoplay自动播放
- muted静音
- loop循环播放
- 示例:
const audioDOM = document.getElementById("audio");
audioDOM.controls = true;
if(audioDOM.loop == false){
audioDOM.loop = true;
}
JS操作函数
play()播放
- 调用该方法能让音频播放
- 注意:
- 同 autoplay 属性一样,在调用之前,需要用户和界面有互动,否则将报错!
- 示例:
const audioDOM = document.getElementById("audio");
if (audioDOM.canPlay == true) { //如果资源准备好可以播放
if (audioDOM.paused == true) //音频为暂停状态
audioDOM.play(); //播放
else
audioDOM.pause(); //暂停
}
pause()暂停
- 调用该方法能让正在播放的音频暂停
- 从 play() 的示例中已经很明显,我们可以通过paused来判断是否为暂停状态,不是则让它暂停,是则让它播放,由此则可以实现平常播放器中单个按钮实现暂停/播放功能
load()加载
- 如果没有设置 preload ,则可以在js调用该函数来触发加载
事件
加载生命周期
loadstart开始加载
- 开始加载音频了
durationchange时长改变
- 音频的总时长改变了。一般就是加载好歌曲的元数据了,或者是切换audio标签的src资源,即切换歌曲的时候。
loadedmetadata元数据加载完毕
- 可以用作判断“音频初始化”的方法。当然初始化也可以用duration属性是否为NaN或者durationchange来判断。其中元数据就包含有歌曲总时长,标题,艺术家等信息。
loadeddata数据开始加载
- 音频的第一帧加载完成时触发,此时整个音频还未加载完。
progress加载中
- 每次浏览器一加载,就会触发这个事件。
- 注意这个事件并不是在加载完成前一直触发,浏览器一般一开始只会加载一部分,然后等你播放或跳跃到和已经加载的音频差不多或是已经超过的时候,才会开始再加载一部分,以此直到完成加载整个音频。
- 加载进度条的长度改变函数,就可以绑定在这个事件上。
canplay可以播放
- 音频可以播放了。音频只加载了一部分,但已经可以开始播放了
- 可以通过这个事件来设置加载动画。触发前启用加载动画,触发后移除加载动画
canplaythrough可以播放整个音频
- 浏览器预计在不停下来进行缓冲的情况下,能够持续播放音频时会触发
其他事件
timeupdate已播放时长更新
- 即 currentTime 更新了,最频繁是每250毫秒触发一次。
- 播放进度条长度改变函数就可以绑定在这个事件上
waiting等待资源中
- 由于没有数据而导致暂停时触发。
- 可用于绑定加载动画
playing播放中
- 从waiting状态转换到可以播放的状态时触发。
play播放
- play()方法被调用时触发。
pause暂停
- pause()方法被调用时触发。
ended结束
- 音频播放完毕后触发。
- 当设置了autoplay时,不会触发这个事件
- 利用这个事件,可以实现播放列表的循环播放,随机播放。当触发时,切换src资源链接,并等待加载触发canplay,然后play()播放。
volumechange音量改变
- 音量改变时触发。
- 音量条的函数可以绑定在这个事件上
ratechange播放速率改变
- 播放速度改变时触发。
error发生错误
- 发生错误时触发。
Индивидуальный шкаф купе на заказ по вашим параметрам
сделать шкаф купе на заказ https://shkaf-kupe-nazakaz177.ru/ .
acquisto farmaci con ricetta: kamagra – farmacia online piГ№ conveniente
아바타 슬롯
“…” Zhu Houzhao는 “나는 당신과 이야기하고 싶지 않고 아버지를보고 싶습니다. “라고 말했습니다.
farmacia online piГ№ conveniente: Avanafil prezzo – Farmacie on line spedizione gratuita
кредит в залог автомобиля
https://vmiredorog.com/prokat-avto-gorodov-rossii/avtolombard-predostavlenie-bystryh-zaymov-pod-zalog-vashego-avto/
http://viagragenerico.site/# viagra subito
acquistare farmaci senza ricetta: avanafil generico – acquisto farmaci con ricetta
Link pyramid, tier 1, tier 2, tier 3
Top – 500 links with integration inside pieces on article domains
Level 2 – 3000 web address Redirected links
Tertiary – 20000 hyperlinks assortment, feedback, entries
Using a link structure is useful for web crawlers.
Demand:
One link to the site.
Keywords.
Accurate when 1 keyword from the resource topic.
Highlight the complementary service!
Essential! Primary links do not conflict with Secondary and Tertiary-rank references
A link pyramid is a tool for boosting the circulation and backlink portfolio of a website or social media platform
Добрый день!
Мы можем предложить дипломы психологов, юристов, экономистов и других профессий по невысоким тарифам.
diploms-rushka.ru/attestat-9-klassov
Привет!
Мы предлагаем дипломы любой профессии по выгодным тарифам.
rushkadiplomikx.ru/kupit-diplom-voronezh
Здравствуйте!
Мы изготавливаем дипломы любых профессий по выгодным ценам.
rushkas-diplom.ru/kupit-diplom-medsestry
Добрый день!
Приобрести диплом любого университета.
mans-diplomas.ru/attestat-za-9-klass
Здравствуйте!
Приобрести диплом ВУЗа.
mans-diploms.ru/kupit-diplom-sssr
Привет!
Купить диплом любого университета.
mandiplomik.ru/kupit-diplom-v-ufe
Дешевые проститутки Тюмень
Секреты выбора цвета натяжного потолка
натяжні стеля https://naryazhnistelifrtg.kiev.ua/ .
Здравствуйте!
Заказать документ о получении высшего образования можно в нашей компании.
rushkas-diplomxx.ru
acquistare farmaci senza ricetta: avanafil in farmacia – acquisto farmaci con ricetta
займ под залог отечественного авто
http://bts.clanweb.eu/profile.php?lookup=37757
farmacie online affidabili: kamagra oral jelly consegna 24 ore – п»їFarmacia online migliore
viagra generico in farmacia costo: viagra senza prescrizione – viagra acquisto in contrassegno in italia
Farmacia online piГ№ conveniente: kamagra oral jelly – acquisto farmaci con ricetta
shipping car across usa http://Car-shipping24.com/ .
shipping car across country shipping car across country .
На сайте https://mzenskprokat.ru/ оформите заявку на то, чтобы воспользоваться такой услугой, как производство металлопроката различного уровня сложности. Завод создает такую продукцию, как: лента, аноды, припои, фольга, прутки, слиток, трубы. Прямо сейчас вы сможете перейти в каталог для того, чтобы изучить всю продукцию, которую создает предприятие. Вся продукция поставляется по требованию заказчика. К каждому клиенту практикуется индивидуальный подход. Номенклатура постоянно расширяется.
Добрый день!
Узнайте стоимость диплома высшего и среднего образования и процесс получения
rushkadiplomik.ru
cross country car shipping cross country car shipping .
comprare farmaci online con ricetta: Avanafil a cosa serve – п»їFarmacia online migliore
Привет, друзья!
Покупка диплома о среднем полном образовании: как избежать мошенничества?
mandiplomiks.ru/kupit-diplom-sssr
Рады помочь!.
Привет!
Как получить диплом о среднем образовании в Москве и других городах
mans-diplomasxx.ru/kupit-diplom-sssr
Окажем помощь!.
https://www.youtube.com/watch?v=NntCT5Wllvo
farmacia online senza ricetta: farmacia online migliore – top farmacia online
acquistare farmaci senza ricetta: Farmacie online sicure – migliori farmacie online 2024
Farmacia online piГ№ conveniente: kamagra gel prezzo – farmacie online sicure
migliori farmacie online 2024: Farmacie online sicure – comprare farmaci online all’estero
Добрый день!
Официальная покупка диплома вуза с сокращенной программой обучения в Москве
rushkadiplomik.ru
farmacie online affidabili: Farmacie che vendono Cialis senza ricetta – comprare farmaci online all’estero
Link pyramid, tier 1, tier 2, tier 3
Primary – 500 references with positioning inside writings on article sites
Level 2 – 3000 domain +Redirect links
Tertiary – 20000 connections combination, remarks, posts
Implementing a link structure is useful for search engines.
Necessitate:
One connection to the domain.
Keywords.
True when 1 query term from the page title.
Observe the supplementary offering!
Crucial! Tier 1 links do not intersect with 2nd and Tertiary-level references
A link pyramid is a mechanism for boosting the circulation and link profile of a online platform or online community
산타스 스택
폐하께서 탄핵기념관을 떠나셨으니…그럼 얼굴을 맞대고 질문하세요.
https://farmait.store/# comprare farmaci online all’estero
https://kupi-buket63.ru/
farmacia senza ricetta recensioni: viagra senza ricetta – viagra ordine telefonico
На сайте https://binarium-trading.store/ вы прочтете информацию о репутации надежной компании, которая ориентирована на российских трейдеров. Условия начала работы на ней подходит каждому. Платформа предлагает клиентам весь нужный функционал, для успешной торговли на бинарном рынке. Чтобы войти в проект, необходимо создать личный кабинет на платформе. Счет можно открыть в разной валюте. Для трейдеров есть подписка на торговые сигналы и аналитическую информацию. С саппортом связаться есть возможность через телеграмм канал.
http://farmait.store/# farmacie online autorizzate elenco
enclosed auto transport companies enclosed auto transport companies .
Линия BetWinner На сайте данного букмекера представлен огромный список различных видов спорта, на основе которых игроки могут принимать участие в ставках. Кроме популярных направлений, существуют и необычные: Серфинг, Херлинг, Собачьи бега, Троттинг и др. Для просмотра информации о прошедших матчах, игроки могут перейти в раздел «Статистика». С помощью настройки фильтров можно быстро найти нужную дисциплину в линии. Казино BetWinner делает акцент и на киберспорте. Данный раздел разнообразный и с подробной росписью к матчам. В нем представлены не только популярные игры, например, Dota 2 и Counter Strike, но и игры, которые не присутствуют у крупных Казино: Owerwatch, Mortal Combat, Tekken и др. Лучшие на комета игровые автоматы онлайн: https://elitsaunastroy.ru/
Букмекер комета — ак отыграть бонус на первый депозит После того как вы получили бонус на первый депозит в компании Комета у вас в личном кабинете появилось два счета: основной и бонусный. Средства с акционного счета не доступны к выводу до того момента пока вы их не отыграете. Только после того как условия отыгрыша будут выполнены средства перейдут на основной баланс. И там их уже можно вывести на карту или в любое другое место. Но, для этого необходимо: Если вы внесли депозит до 9000 рублей, то вам потребуется проставить сумму бонуса пятикратно. В зачет идут ставки типа «экспресс». Причем, каждый экспресс состоит минимум из 3-х событий с коэффициентом от 1,4 и выше. При пополнении счета на сумму от 9001 рубля так же потребуется проставить сумму бонуса в пятикратном объеме. И, как вы уже догадались, то же ставками типа экспресс, который должен состоять минимум из трех событий. Но, в этом случае минимум три события с коэффициентом от 1,5 и выше.
Чем занимается организация, виды деятельности Основной вид деятельности организации: Деятельность по организации и проведению азартных игр и заключения пари (код по ОКВЭД 92.1). Дополнительно организация заявила следующие виды деятельности: 10.85 Производство готовых пищевых продуктов и блюд 41.20 Строительство жилых и нежилых зданий 43.39 Производство прочих отделочных и завершающих работ 43.99.7 Работы по сборке и монтажу сборных конструкций 46.19 Деятельность агентов по оптовой торговле универсальным ассортиментом товаров показать ещё 21 ООО ФИРМА СТОМ имеет лицензии на право заниматься следующими видами деятельности: Номер, дата выдачи Кем выдана Виды деятельности Срок действия 15от 15.07.2010 ФЕДЕРАЛЬНАЯ НАЛОГОВАЯ СЛУЖБА Деятельность по организации и проведению азартных игр в Казиноах и тотализаторах с 15.07.2010 Л027-00108-77/00395486от 15.07.2010 ФЕДЕРАЛЬНАЯ НАЛОГОВАЯ СЛУЖБА Деятельность по организации и проведению азартных игр в Казиноах или тотализаторах с 15.07.2010 Л027-00108-77/00395486от 15.07.2010 ФЕДЕРАЛЬНАЯ НАЛОГОВАЯ СЛУЖБА Деятельность по организации и проведению азартных игр в Казиноах и тотализаторах с 15.07.2010 Организация включена в реестр Роскомнадзора как оператор, осуществляющий обработку персональных данных.
farmacia online: avanafil 100 mg prezzo – Farmacia online miglior prezzo
Link pyramid, tier 1, tier 2, tier 3
Level 1 – 500 connections with positioning embedded in articles on publishing sites
Level 2 – 3000 URL Rerouted connections
Tier 3 – 20000 references mix, feedback, writings
Implementing a link structure is advantageous for search engines.
Necessitate:
One link to the platform.
Keywords.
Accurate when 1 key phrase from the resource heading.
Note the supplementary offering!
Essential! First-level connections do not conflict with Secondary and Tertiary-rank links
A link pyramid is a device for elevating the movement and link profile of a online platform or virtual network
http://kamagrait.pro/# acquistare farmaci senza ricetta
gel per erezione in farmacia: viagra generico – viagra generico sandoz