audio
是HTML5
增加的HTML
标签。用来播放音频。
IE8
及以下版本不支持audio
元素。
属性 | 取值 | 说明 |
---|---|---|
src | URL | 要播放音频的地址 |
loop | true | false | 是否循环播放 |
muted | true | false | 是否静音 |
controls | true | false | 是否显示控件,默认控件并不好看,可能我们希望自己编写播放控件 |
autoplay | true | false | 是否页面加载完成后就自动播放。该属性在iOS 和Android 高版本不起作用。 |
preload | auto | meta | none | 是否预加载音频资源。如果使用
|
示例:
<audio preload="meta" controls muted autoplay loop />
<audio preload="meta" controls='true' muted='true' autoplay='true' loop='true' />
播放:
var mediaPlayer = document.getElementById('audio1');
mediaPlayer.play();
暂停播放:
var mediaPlayer = document.getElementById('audio1');
mediaPlayer.play();
注意:没有stop()
方法。
移动端与PC
不同,移动端使用的网络环境通常是移动网络,移动网络的流量是相当宝贵的,而音频文件通常都是相对比较大的。 所以,一但在移动端自动播放音频的话,用户不知情的情况下就会消耗大量流量。所以为了用户考量,iOS
对autoplay
属性不支持。 播放必须让用户自己触发。一个伟大的公司,一定要防止人性的恶!所以,后来Android
也采纳了这个idea
。
在微信中,微信JS SDK能够自动播放。
示例:
function autoPlayMusic(viewId, url) {
var mediaPlayer = document.getElementById(viewId);
mediaPlayer.src = url;
if (isMobile()) {
loadScript(window.location.protocol + '//res.wx.qq.com/open/js/jweixin-1.0.0.js', function () {
wx.config({});
wx.ready(function () {
mediaPlayer.play();
});
});
} else {
mediaPlayer.play();
}
}
在移动端的其他浏览器中,可以让用户触摸界面上的任意位置来触发播放。
示例:
var mediaPlayer = document.getElementById(viewId);
mediaPlayer.src = url;
document.addEventListener('touchstart', function () {
mediaPlayer.play();
}, false);