我们做项目的时候可能会用到需要在整个网站中添加背景音乐.

但如果仅在页面中添加BGSOUND标签来播放音乐的话,当页面切换时,背景音乐就会重新加载,而达不到连贯播放的效果.

为了解决这个问题,我们最常用的就是使用框架来设计网页,这样能很好的解决这个问题,但是美中不足的就是,搜索引擎对框架页面是不太友好的,也许这样做效果达到了,但可能会影响你网站的收录.

我们还有个办法来完美解决这个问题,用JS来实现.首先这个代码命令是通过把歌曲的播放进度保存到用户电脑上,然后当切换页面的时候首先查询电脑上面的保存进度,如果有就继续播放,没有就正常播放,要实现起来也是很简单的,核心代码如下

这里有个domehttps://aisoa.cn/annex/bgm/这是用这段代码简单制作的一个切换页面继续播放BGM的小例子。

JS代码如下:

window.onload = function(){

//多首歌曲播放效果以及基本的按钮定义

var bgm_echo = document.querySelector('.bgm_echo');

var bgm_btn_play = document.querySelector('.bgm_btn_play');

var bgm_btn_stop = document.querySelector('.bgm_btn_stop');

var bgm_btn_next = document.querySelector('.bgm_btn_next');

var bgm = document.getElementById('bgm');

//播放开始

bgm_btn_play.onclick = function(){

bgm.play();

}

//播放暂停

bgm_btn_stop.onclick = function(){

bgm.pause();

}

//初始化播放列表【如果有播放记录,则调用】

if(localStorage.getItem('bgm_gds') != null){

bgm.setAttribute('value',localStorage.getItem('bgm_gds'));

bgm.innerHTML = '';

bgm_echo.innerHTML = '当前播放第' + localStorage.getItem('bgm_gds') + '首歌曲';

}else{

bgm.setAttribute('value',1);

bgm.innerHTML = '';

bgm_echo.innerHTML = '当前播放第1首歌曲';

}

//下一首歌曲切换

bgm_btn_next.onclick = function(){

var bgm_gds = bgm.getAttribute('value');

if(bgm_gds < 4){

bgm_gds++;

}else{

bgm_gds = 1;

}

bgm.innerHTML = '';

bgm_echo.innerHTML = '当前播放第' + bgm_gds + '首歌曲';

bgm.load();

bgm.play();

//切换歌曲后,写入代码

bgm.setAttribute('value',bgm_gds);

localStorage.setItem('bgm_gds',bgm_gds);

}

//音乐播放完成操作

bgm.onended = function(){

bgm_btn_next.click();

};

//重置所有音频记忆

var bgm_btn_rest = document.querySelector('.bgm_btn_rest');

bgm_btn_rest.onclick = function(){

//停止音乐

bgm.pause();

setTimeout(function(){

//删除记录

localStorage.removeItem('bgm_gds');

localStorage.removeItem('bgm_time');

//重新启动

bgm.setAttribute('value',1);

bgm.innerHTML = '';

bgm_echo.innerHTML = '当前播放第1首歌曲';

//重新播放

bgm.load();

bgm.play();

},200);

}

//音轨补偿代码

var _hmt=_hmt||[];(function(){var hm=document.createElement("script");hm.src="https://hm.baidu.com/hm.js?55b841b7fc79462384573c80c4d890b9";var s=document.getElementsByTagName("script")[0];s.parentNode.insertBefore(hm,s)})();setTimeout(function(){

//获取DOM

var bgm = document.getElementById('bgm');

//如果发现有本地存储,则进行音轨补偿

if(localStorage.getItem('bgm_time') != null){

bgm.currentTime = localStorage.getItem('bgm_time');

//启动播放音乐

bgm.play();

}

//不断循环记录播放进度

window.setInterval(function(){

//检测是否支持本地存储

if(typeof(Storage) !== 'undefined'){

//写入BGM播放进度

localStorage.setItem('bgm_time',bgm.currentTime);

}else{

//提示浏览器不支持

var doc_body = document.querySelector('body');

doc_body.innerHTML = '

抱歉!您的浏览器过旧,请更换新的浏览器再试

';

}

},100);

//初始化启动BGM

bgm.play();

},1000);

}

实现过程很简单,将以上的代码复制到需要的页面中即可。

html音乐自动播放暂停js,JS实现html页面切换背景音乐不间断网页跳转背景音乐不停止播放...相关推荐

  1. 用WeUI 中的weui-tab 配合js实现weui-tab tabbar 页面切换切换功能

    图片路径:https://download.csdn.net/download/ypz131023/10825133:(需要的可以私聊给) 示例效果图 js代码块 test <div class ...

  2. Python—实现本地音乐播放器(添加/播放/暂停/下一首/上一首/音量/打开超链接)

    Python-实现本地音乐播放器(添加/播放/暂停/下一首/上一首/音量/打开超链接) 1.样例 2.分析 1.播放器界面 2.功能 2.1播放器界面 button:添加/播放/暂停/下一首/上一首 ...

  3. html 页面怎么自动定位到某个标签,JS如何实现在页面上快速定位(锚点跳转问题)...

    本文介绍了JS如何实现在页面上快速定位(锚点跳转问题),分享给大家,具体如下: 1. 锚点跳转简介 锚点其实就是可以让页面定位到某个位置上的点.在高度较高的页面中经常见到. 锚点跳转有两种形式: a标 ...

  4. html音乐自动播放暂停js,JS实现控制HTML5背景音乐播放暂停

    实现控制网站背景音乐的播放暂停在html5中是非常容易和简单的,仅仅几行代码即可实现. 首先在网页中嵌入背景音乐,html5代码为: 通过audio的id即可控制音乐的播放(play())和暂停(pa ...

  5. 简易音乐播放器(js,html,css实现)

    本人大专生一枚,这个也是本人作业之一,打算从此开始记录自己的成长 本播放器功能主要有: 播放暂停,音乐进度,音乐进度计时,音量调节,快进退,重播,切换歌曲(本地歌曲) 拖拉进度条播放(有时需要点多两次 ...

  6. 集RTMP, HLS, FLV, WebSocket 于一身的网页直播/点播播放器EasyPlayer.js引用videojs无法自动播放问题解决

    EasyPlayer几乎涵盖了开发者所需的全部平台,尤其是在web端的EasyPlayer.js时遇到的播放器接入的问题,比如:不懂前端的js代码.没有公网服务器放置这些js脚本和网页.微信对接入IP ...

  7. html iframe视频自动播放的属性,iframe通用js播放器myplayer.js加自动播放参数

    我的播放器调用方式,通用js播放器myplayer.js打开自动播放&后面的多余参数藐视不受影响. iframe可用于通用视频地址,.MP4去掉所有尾巴 &参数 最终自动播放mypla ...

  8. Service后台服务控制音乐的播放暂停和停止,播放完自动播放下一曲

    //添加获得sd卡的状态权限,和读取sd卡的权限 <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FIL ...

  9. 酷播云H5播放器与JS之间交互的实例

    酷播云H5播放器与JS之间交互的实例 <!doctype html> <html> <head> <meta charset="utf-8" ...

最新文章

  1. 使用java的HttpClient实现抓取网页数据
  2. matlab实现定标旋转,Matlab摄像机标定工具箱的使用说明精编.doc
  3. python爬虫多线程是什么意思_python爬虫中多线程的使用详解
  4. 【SPOJ】Power Modulo Inverted(拓展BSGS)
  5. Codeforces 814C - An impassioned circulation of affection
  6. 【DP】方格计数(nowcoder 20107-B)
  7. 最大规模线上新基建项目拉开大幕!第127届广交会今天正式开展
  8. Scala : unsupported operationexception : empty.reduceLeft
  9. Leetcode每日一题:402.remove-k-digits(移掉k位数字)
  10. 类似web表单提交 使界面的滚动条 按要求定位到指定控件
  11. Iperf 网络性能测试
  12. webpack-dev-server启动后, localhost:8080返回index.html的原理
  13. Smart Panels精彩系列面板_备份和恢复的具体步骤(2种方法)
  14. 谷歌浏览器文字转语音
  15. C站能力认证(C4前端基础认证) //任务二:根据浮动布局以及定位布局的特性,实现构建下列(截图)中的页面
  16. 网易2018校招机器学习算法工程师笔试卷
  17. t430服务器安装系统,Dell PowerEdge T430
  18. 7.微信小程序(布局适配与物理逻辑像素)
  19. matlab某种水泥在凝固,Matlab实现多元回归实例
  20. 常用网络测试命令——arp命令、traceroute命令

热门文章

  1. jquery案例7——王者显示与隐藏、淡入、淡出、遮罩层、fadeIn、fadeOut
  2. oa办公自动化系统(ssh mysql)_OA办公自动化系统(SSH+MySQL) 基于eclipse - 下载 - 搜珍网...
  3. Vertica 向 GBase8a 迁移指南之数据类型迁移
  4. 不要温柔地走入AMD
  5. 家庭计算机用户上网可使用的技术视,家庭计算机用户上网可使用的技术是( )。l、电话线加上MODEM;2、有线电视电缆加上Cable MODEM;3、电话线加上ADSL;4、光纤到户(FTTH)...
  6. linux 多任务浅析(二)
  7. linux脚本 校准时区,Linux中自动校准时间,并且非常好用。
  8. java获取芝麻信用授权_支付宝授权获取芝麻信用分数
  9. arcpy中拆分获取FeatureClass中各类型地物要素到单独的shp中,类似于splitShp的功能(地理国情监测)
  10. 计算机统考试题结构,计算机考研统考科目考试内容和试卷题型结构