热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

我们做项目的时候可能会用到需要在整个网站中添加背景音乐.但如果仅在页面中添加BGSOUND标签来播放音乐的话,当页面切换时,背景音乐就会重新加载,而达不到连贯播放的效果.为了解决这

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

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

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

201812233352_3185.jpg

我们还有个办法来完美解决这个问题,用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&#43;&#43;;

}else{

bgm_gds &#61; 1;

}

bgm.innerHTML &#61; &#39;&#39;;

bgm_echo.innerHTML &#61; &#39;当前播放第&#39; &#43; bgm_gds &#43; &#39;首歌曲&#39;;

bgm.load();

bgm.play();

//切换歌曲后&#xff0c;写入代码

bgm.setAttribute(&#39;value&#39;,bgm_gds);

localStorage.setItem(&#39;bgm_gds&#39;,bgm_gds);

}

//音乐播放完成操作

bgm.onended &#61; function(){

bgm_btn_next.click();

};

//重置所有音频记忆

var bgm_btn_rest &#61; document.querySelector(&#39;.bgm_btn_rest&#39;);

bgm_btn_rest.onclick &#61; function(){

//停止音乐

bgm.pause();

setTimeout(function(){

//删除记录

localStorage.removeItem(&#39;bgm_gds&#39;);

localStorage.removeItem(&#39;bgm_time&#39;);

//重新启动

bgm.setAttribute(&#39;value&#39;,1);

bgm.innerHTML &#61; &#39;&#39;;

bgm_echo.innerHTML &#61; &#39;当前播放第1首歌曲&#39;;

//重新播放

bgm.load();

bgm.play();

},200);

}

//音轨补偿代码

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

//获取DOM

var bgm &#61; document.getElementById(&#39;bgm&#39;);

//如果发现有本地存储&#xff0c;则进行音轨补偿

if(localStorage.getItem(&#39;bgm_time&#39;) !&#61; null){

bgm.currentTime &#61; localStorage.getItem(&#39;bgm_time&#39;);

//启动播放音乐

bgm.play();

}

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

window.setInterval(function(){

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

if(typeof(Storage) !&#61;&#61; &#39;undefined&#39;){

//写入BGM播放进度

localStorage.setItem(&#39;bgm_time&#39;,bgm.currentTime);

}else{

//提示浏览器不支持

var doc_body &#61; document.querySelector(&#39;body&#39;);

doc_body.innerHTML &#61; &#39;

抱歉&#xff01;您的浏览器过旧&#xff0c;请更换新的浏览器再试&#39;;

}

},100);

//初始化启动BGM

bgm.play();

},1000);

}

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



推荐阅读
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
  • Java学习笔记之使用反射+泛型构建通用DAO
    本文介绍了使用反射和泛型构建通用DAO的方法,通过减少代码冗余度来提高开发效率。通过示例说明了如何使用反射和泛型来实现对不同表的相同操作,从而避免重复编写相似的代码。该方法可以在Java学习中起到较大的帮助作用。 ... [详细]
  • 一、什么是闭包?有什么作用什么是闭包闭包是定义在一个函数内部的函数,它可以访问父级函数的内部变量。当一个闭包被创建时,会关联一个作用域—— ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
  • 用Vue实现的Demo商品管理效果图及实现代码
    本文介绍了一个使用Vue实现的Demo商品管理的效果图及实现代码。 ... [详细]
  • 前段时间做一个项目,需求是对每个视频添加预览图,这个问题最终选择方案是:用canvas.toDataYRL();来做转换获取视频的一个截图,添加到页面中,达到自动添加预览图的目的。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 本文介绍了游标的使用方法,并以一个水果供应商数据库为例进行了说明。首先创建了一个名为fruits的表,包含了水果的id、供应商id、名称和价格等字段。然后使用游标查询了水果的名称和价格,并将结果输出。最后对游标进行了关闭操作。通过本文可以了解到游标在数据库操作中的应用。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • 如何在HTML中获取鼠标的当前位置
    本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
author-avatar
浪漫的美食
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有