h5自定义audio(问题及解决)

h5活动需要插入音频,但又需要自定义样式,于是自己写咯

html

1 <!-- cur表示当前时间 max表示总时长 input表示进度条 -->
2 <span class=‘cur‘></span><input type="range" min=0 max=100 class=‘range‘ value=0><span class=‘max‘></span>

css

/* 进度条 */
.range {
    width: 5.875rem;
    height: 0.15rem;
    background: #2386e4;
    border-radius: 0.25rem;
    -webkit-appearance: none !important;
    position: absolute;
    top: 3.55rem;
    left: 6rem;
}
/* 进度滑块 */
.range::-webkit-slider-thumb {
    width: 0.5rem;
    height: 0.5rem;
    background: #fff;
    border: 1px solid #f18900;
    cursor: pointer;
    border-radius: 0.25rem;
    -webkit-appearance: none !important;
}

js

 1 //将秒数转为00:00格式
 2 function timeToStr(time) {
 3     var m = 0,
 4     s = 0,
 5     _m = ‘00‘,
 6     _s = ‘00‘;
 7     time = Math.floor(time % 3600);
 8     m = Math.floor(time / 60);
 9     s = Math.floor(time % 60);
10     _s = s < 10 ? ‘0‘ + s : s + ‘‘;
11     _m = m < 10 ? ‘0‘ + m : m + ‘‘;
12     return _m + ":" + _s;
13 }
14 //触发播放事件
15 $(‘.play‘).on(‘click‘,function(){
16     var audio=document.getElementById(‘ao‘);
17     audio.play();
18     setInterval(function(){
19         var t=parseInt(audio.currentTime);
20     $(".range").attr({‘max‘:751});
21     $(‘.max‘).html(timeToStr(751));
22         $(".range").val(t);
23     $(‘.cur‘).text(timeToStr(t));
24     },1000);
25 });
26 //监听滑块,可以拖动
27 $(".range").on(‘change‘,function(){
28     document.getElementById(‘ao‘).currentTime=this.value;$(".range").val(this.value);29 });

以上基本可以实现自定义音频播放,但是在拖动进度条的时候出现了问题,电脑上是ok的,但是在手机上可以拖动,只不过音频的总时长比正常播放少了好几分钟,导致拖动进度后播放不准确。通过测试发现手机上拿到的duration(总时长)跟电脑上不一样,导致滑动后播放位置不准确。究其原因发现因为上传的音频被我压缩了,所以在手机上拿到的duration就跟正常的不一样。所以音频经过压缩后在手机上其duration就会变(电脑上不会),以后要注意。如果有什么既可以压缩音频也可以在手机上拿到正常duration的方法,麻烦告知小弟,哈哈。

时间: 2024-12-15 01:49:42

h5自定义audio(问题及解决)的相关文章

微擎自定义菜单40063错误解决

微擎自定义菜单会出现如下错误: 解决方案1:升级微擎. 解决方案2:修改如下文件,\source\controller\menu\designer.ctrl.php 修改大概在61行左右. 有更多干货请访问:微信开发者论坛:http://www.weixfu.com/ 微擎自定义菜单40063错误解决

H5自定义滚动插件——DeftScroll.js,可自定义滚动条

在一些项目中,用户总是要求自定义一下滚动条,以前一般用iscroll解决,但是发现iscroll有很多不方便的地方,而且也比较大,索性自己琢磨一个类似的插件吧!目的有两个:要足够小,易于上手使用:功能一定要足够实用,能满足广大H5开发者的基本需求. 介绍一下这个插件的主要功能: 1.隐藏或显示滚动条,自定义滚动条样式. 2.滚动dom的刷新:refresh: 3.滚动内容的懒加载: 4.子元素绑定tap事件: 5.支持scrolling.scrollEnd等插件内事件绑定: 6.scrollTo

android安卓屏蔽禁用系统输入法,自定义软键盘,解决EditText光标问题demo

目前很多的输入法都有自动提示补全功能,在一些应用场景里不适用,需要禁用系统输入法,自定义软键盘,EditText的光标问题是比较头疼的,网上的说法很多,然而大部分都是解决不了问题的.以下是本人做的一个demo供网友参考. 直接上代码: xml软键盘:         <android.inputmethodservice.KeyboardView             android:id="@+id/keyboard_view"             android:lay

zabbix 获取不到自定义脚本的值解决

agent端: zabbix 自定义脚本 [[email protected] script]# cat check_ping.sh #!/bin/bash result=$(/usr/local/nagios/libexec/check_icmp -s $1 $2) a=$(echo $result | awk '{print $1}') if [ $a == "OK" ];then echo "0000" else echo "2222" f

织梦添加超过两百个自定义字段后在使用addfields调用自定义字段出错的解决方法

dedecsm 自定义模型  添加自定义字段(个数一百多个),使用addfields  方法调用,出现调用不出来的情况[addfields  里面就能添加145个字段,多了直接乱码或者无法显示] 解决方法 分别打开 include/dedehtml2.class.php include/dedetag.class.php include/dedetemplate.class.php 搜索 1024 全部改成 10240 文件存储字节改大就可以了. 原文地址:https://www.cnblogs

h5页面滑动卡顿解决方法

解决方式: 给滚动的元素加样式:-webkit-overflow-scrolling: touch; -webkit-overflow-scrolling(允许独立的滚动区域和触摸回弹) 如果值为auto,就是普通的滚动,手指离开就停止滚动,让人感觉有点卡顿 如果设置为touch,在手指离开后还会滚一下,有回弹效果,看上去很流畅 但是刚开始用的时候有个小bug,h5页面打包成app时,一开始写成了*{-webkit-overflow-scrolling: touch;},导致滚动到最后页面底部出

【一点经验分享】Yii2 - custom validator not work 自定义验证无效的解决方法

有个项目正在使用Yii2开发,因为是第一次使用2代Yii,也算是不停的摸索. 昨天就遇到一个问题,谷歌也帮不上忙,就是自己在model里写的自定义validator不生效. 原本以为只是自定义无效,终于在使用unique这个yii原生validator时发现,问题的答案就是使用ajax validation. 为什么自定义validator和原生unique都无效呢?因为这些代码是保存在服务器上的,不使用ajax怎样能获取验证结果呢? yii2中的controller也必须 use yii\we

iOS 使用自定义手势屏蔽按钮解决方法/UITapGestureRecognizer屏蔽Button

有时候需要在scrollview上面添加手势,让其获取点击后,收起键盘,就用到添加手势.可是会出现一些后续问题,比如会拦截scrollview上面的其他一切可点击的控件,你可能会去设置手势控件的一些属性.但仅仅设置 UIGestureRecognizer 的属性是不够的,比如 : screenTouch.numberOfTapsRequired =1; [screenTouchsetCancelsTouchesInView:NO]; 这种有时候会拦截UITextField上面的清空text的按钮

仿QQ电话/消息切换的自定义布局结合Fragment解决你的需求!

转载请注明出处:王亟亟的大牛之路 先上模仿的对象:QQ的电话/消息 界面 用户点击消息或者电话会切换不同的界面 然后再上自己实现的界面 然后再附带了一些每一个Fragment内部的操作,来模拟切换后的效果 实现方法: 一个自定义控件+下面的Fragment.利用setOnSegmentControlViewClickListener方法来监听用户的点击来对界面进行操作. 项目目录结构 一个主Activity加一系列分页的Fragment(其实这里可以用Java代码来添加Fragment,但是考虑