热门标签 | 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;将以上的代码复制到需要的页面中即可。



推荐阅读
  • Java学习笔记之使用反射+泛型构建通用DAO
    本文介绍了使用反射和泛型构建通用DAO的方法,通过减少代码冗余度来提高开发效率。通过示例说明了如何使用反射和泛型来实现对不同表的相同操作,从而避免重复编写相似的代码。该方法可以在Java学习中起到较大的帮助作用。 ... [详细]
  • FineReport平台数据分析图表显示部分系列接口的应用场景和实现思路
    本文介绍了FineReport平台数据分析图表显示部分系列接口的应用场景和实现思路。当图表系列较多时,用户希望可以自己设置哪些系列显示,哪些系列不显示。通过调用FR.Chart.WebUtils.getChart("chartID").getChartWithIndex(chartIndex).setSeriesVisible()接口,可以获取需要显示的系列图表对象,并在表单中显示这些系列。本文以决策报表为例,详细介绍了实现方法,并给出了示例。 ... [详细]
  • 一、什么是闭包?有什么作用什么是闭包闭包是定义在一个函数内部的函数,它可以访问父级函数的内部变量。当一个闭包被创建时,会关联一个作用域—— ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • 本文介绍了Oracle存储过程的基本语法和写法示例,同时还介绍了已命名的系统异常的产生原因。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • 十大经典排序算法动图演示+Python实现
    本文介绍了十大经典排序算法的原理、演示和Python实现。排序算法分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。文章还解释了时间复杂度和稳定性的概念,并提供了相关的名词解释。 ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
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社区 版权所有