定制化开发解决audio自动播放无效问题

目录

问题描述

在360或者qq浏览器,audio定制化开发的自动播放属性目前为定制化开发止是有效的,网页的body定制化开发里面插入下面代码后,定制化开发打开页面就会自动播放音乐。

<audio autoplay="autoplay" loop="loop" preload="auto"            src="http://music.163.com/song/media/outer/url?id=1337065812.mp3"></audio>
  • 1
  • 2
  • 3

但是Edge、定制化开发谷歌等浏览器是不支持定制化开发音乐自动播放的,通常会报错。
Uncaught (in promise) DOMException: play() failed because the user didn’t interact with the document first.

我们看一下谷歌浏览器怎么说的。(已自动翻译为中文)https://goo.gl/xX8pDD

当然下面还提出了一些解决办法,下面我会给出几个我已经测试过的解决办法。

解决办法1

上面也说了可以始终允许静音自动播放,用户可以通过点击按钮使其播放,这个方法很多平台都在使用。(比如网页浏览一个b站视频,需要点击播放音频按钮才会播放音频)
在body中插入如下代码即可。(按钮样式需要自己找一个)

<video id="video" muted autoplay src="http://music.163.com/song/media/outer/url?id=1337065812.mp3"></video><button type="button" id="unmuteButton">Click Me!</button><script>  unmuteButton.addEventListener('click', function() {    video.muted = false;  });</script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

这个方法有一个问题就是音频一直在静音播放,你不知道进度,等你点击按钮可能音频已经播放几秒钟了。

解决办法2

使用网易云音乐的外链播放器,在网易云官网搜索一首歌曲之后进入播放页面,点击生成外链播放器。

使用iframe插件,复制代码。

但是要注意一点,代码中的src是不完整的,需要在前面加上http:

<iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width=330 height=86 src="http://music.163.com/outchain/player?type=2&id=1464325108&auto=1&height=66" style="top:0px;position:absolute;z-index:2;left:0px"></iframe>
  • 1
  • 2
  • 3

可以自己调整位置,让这个插件显示在页面上方,用户自己决定音乐的播放。

解决办法3

这个办法需要用户点击了页面才会自动播放音乐

<audio id="bgmusic" src="http://music.163.com/song/media/outer/url?id=1851244378.mp3" autoplay="autoplay" loop="loop" style="display: block; width: 3%; height:3%;"></audio>    <script type="text/javascript">  function toggleSound() {            var music = document.getElementById("bgmusic");//获取ID                console.log(music);                console.log(music.paused);            if (music.paused) { //判读是否播放                music.paused=false;                music.play(); //没有就播放            }        }setInterval("toggleSound()",1);</script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

解决办法4

使用按钮控制HTML5背景音乐开关,源码来自https://www.helloweba.net/javascript/321.html
大家可以自行下载。

<!DOCTYPE HTML><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width; initial-scale=1.0"><title>演示:使用按钮控制HTML5背景音乐开关</title><style></style><link rel="stylesheet" type="text/css" href="../css/main.css" /></head><body><div id="main">   <div style="width:300px; height:120px; margin:100px auto">		<audio id="music2" src="http://music.163.com/song/media/outer/url?id=1337065812.mp3"  loop="loop">你的浏览器不支持audio标签。</audio>        <a href="javascript:playPause();"><img src="pause.gif" width="48" height="50" id="music_btn2" border="0" style="top: 10px;right: 10px;position: absolute;"></a>   </div></div><script src="https://cdn.bootcss.com/jquery/1.8.2/jquery.min.js"></script><script>$("#audio_btn").click(function(){	var music = document.getElementById("music");	if(music.paused){		music.play();		$("#music_btn").attr("src","play.gif");	}else{		music.pause();		$("#music_btn").attr("src","pause.gif");	}});function playPause() {    var music = document.getElementById('music2');    var music_btn = document.getElementById('music_btn2');    if (music.paused){        music.play();        music_btn.src = 'play.gif';    }    else{        music.pause();        music_btn.src = 'pause.gif';     }}</script></body></html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50

如何找音乐链接可以看我的文章:

解决办法5

换个浏览器打开html文件,目前360、qq浏览器是支持自动播放音频的,不用任何操作。

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发