`
leiyongping88
  • 浏览: 77011 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

!!解决html5 audio iphone,ipd,safari不能自动播放问题

阅读更多

html audio 在iPhone,ipd,safari浏览器不能播放是有原因滴
(在safri on ios里面明确指出等待用户的交互动作后才能播放media,也就是说如果你没有得到用户的action就播放的话就会被safri拦截)

找了很多资料都没有解决,不过最终在国外网站通过翻译解决问题,希望能帮到没有解决此问题的童鞋

附带源码如下:黑色部分表示重点突出

var g_audio = window.g_audio = new Audio();  //创建一个audio播放器
var g_event = window.g_event =new function(){
    var events = ['load','abort','canplay','canplaythrough',
              'durationchange','emptied','ended','error',
              'loadeddata','loadedmetadata','loadstart',
              'pause','play','playing','progress',
              'ratechange','seeked','seeking','stalled',
              'suspend','timeupdate','volumechange','waiting', 'mediachange'];
    g_audio.loop = false;
g_audio.autoplay = true;
g_audio.isLoadedmetadata = false;
g_audio.touchstart = true;
g_audio.audio = true;
g_audio.elems = {};
g_audio.isSupportAudio = function(type){
    type=type||"audio/mpeg";
    try{
        var r=g_audio.canPlayType(type);
        return g_audio.canPlayType&&(r=="maybe"||r=="probably")
    }catch(e){return false;}
};
g_audio.push = function(meta){
    g_audio.previousId = g_audio.id;
    g_audio.id = meta.song_id;
    g_audio.previousSrc = g_audio.src;
    g_audio.previousTime = 0.00;
    g_audio.src = g_audio.currentSrc = meta.song_fileUrl;
    g_audio.isLoadedmetadata = false;
    g_audio.autobuffer = true;
    g_audio.load();
    g_audio.play();
    if(g_audio.previousSrc !== g_audio.src){
    g_audio.play();
    }
};

for(var i = 0, l = events.length; i < l; i++){
    (function(e){
    var fs = [];
    this[e] = function(fn){
        if(typeof fn!== 'function'){
        for (var k = 0; k<fs.length; k++){
            fs[k].apply(g_audio);
        }
        return ;
        }
        fs.push(fn);
        g_audio.addEventListener(e, function(){
        fn.apply(this);
        });
    };
    }).apply(this, [events[i]]);
}

this.ended(function(){  //播放结束
   
});

this.load(function(){  //加载
   this.pause();
    this.play();
});

this.loadeddata(function(){
    this.pause();
    this.play();
});

this.loadedmetadata(function(){
    this.isLoadedmetadata = true;
});
this.error(function(){   //请求资源时遇到错误
   
});
this.pause(function(){  //歌曲暂停播放
   
});
this.play(function(){  //歌曲播放
   
});
};

 

 

$(document).ready(function(){   
    if(/i(Phone|P(o|a)d)/.test(navigator.userAgent)){
        $(document).one('touchstart', function (e) {
        g_audio.touchstart = true;
        g_audio.play();
        g_audio.pause();
        return false;
        });
    }
});

 

audio使用:

$("#main").unbind("click").bind("click",function(){
        //gid 表示歌曲id,只是一个表示,没有值不影响播放
    //song_fileUrl :播放歌曲地址,不能为空,有效地址
    g_audio.elems["id"] = gid;
    g_audio.push({song_id:gid,song_fileUrl:json.URL});
});//绑定事件

分享到:
评论
5 楼 tmkook 2015-04-01  
在chrome下可以,但是在ios6下还是不行呀,能不能详细说明下呢?
4 楼 qinfangge 2015-01-04  
一点毛用都不用,还说自己解决了!! 特地注册个号来回复你一下
3 楼 zhengxyit 2014-06-10  
#main 是随便一个ID吧,就是为了能绑个事件;这个方法我试了下,在PC上的Chome和Android的手机上都可以播放声音,但是在Safari上还是不行啊。。。
2 楼 黯然枫涩 2013-12-11  
大家都在转这个方法,可是没有人进行测试过么?根本就不是完全的代码,至少连个#main控件都没有定义。
1 楼 sdnydubing 2013-11-20  
高人,请问能个具体使用例子?dubing@ncse.com.cn    不胜感激

相关推荐

    IPD+CMMI+Scrum一体化研发管理解决方案_华为IPD流程管理各阶段体系操作流程图项目产品开发培训方案资料.ppt

    IPD+CMMI+Scrum一体化研发管理解决方案 本文将对IPD+CMMI+Scrum一体化研发管理解决方案进行详细的知识点整理和解释。这个解决方案旨在帮助企业解决研发管理面临的各种问题,提高研发效率和质量,提高企业的核心竞争...

    IPD流程管理(华为IPD实践完整版)共54页.pdf.z

    9. **IPD工具支持**:利用现代项目管理工具,如PDM(Product Data Management)、PLM(Product Lifecycle Management)等,实现流程的信息化和自动化。 华为在实践中不断完善IPD流程,形成了具有华为特色的企业文化...

    集成产品开发 IPD开发流程 华为IPD流程管理体系+过程+度量

    6. **度量与反馈**:IPD强调建立度量体系,通过度量数据评估流程效果,及时发现并解决问题。这些度量可能包括开发周期、产品质量、客户满意度等。 7. **持续改进**:IPD流程不是一成不变的,而是持续改进的过程。...

    IPD-DCP和TR各阶段评审要素表完整(模板).zip

    在IPD运作中,DCP评审共有5个,主要是业务决策是否要进入下一个阶段,从产品投资的角度进行评审。TR评审共有7个,主要是从技术的角度评审决策是否具有可实现性和技术领先性。本资源为您整理了DCP和TR评审各阶段的...

    IPD重构产品研发流程.pdf

    专家介入过多,不能充分调动项目组成员的积极性并强化其责任,得不到成长,介入过少又不能充分发挥技术评审的作用,同样对确保项目质量不利。 六、在产品开发过程中进行技术攻关 平台化开发是IPD 的核心思想之一,...

    IPD财务分享.pptx

    IPD财务分享 IPD财务主题分享是指在产品开发过程中,财务团队扮演着专业支持角色,协同其他团队,共同完成项目目标。该分享涵盖了IPD模型的三个部分:产品组合计划、产品开发项目、产品全生命周期管理。 产品组合...

    IPD-PTM流程规范

    综上所述,IPD-PTM流程规范是确保软件和产品开发过程中的测试质量核心工具,它结合了PDCA管理理念,为测试团队提供了清晰的工作指导,帮助识别和解决问题,以达到提高产品质量、降低风险的目标。通过严格的流程执行...

    IPD5个DCP评审表要素文字版(5p)

    IPD(Integrated Product Development,集成产品开发)是一种高效...在IPD流程中,DCP评审是确保决策质量和项目进度的关键工具,它强化了跨职能团队之间的沟通,降低了产品开发过程中的不确定性,提高了产品的成功率。

    IPD如何解决产品开发的典型问题.zip

    它组建由研发、市场、制造、质量等不同职能领域的专家组成的跨职能团队,共同参与决策和解决问题。这种协作模式有助于信息的快速传递和共享,减少沟通成本,提高决策效率。 IPD还引入了“门径管理”机制。每个开发...

    IPD5个DCP评审表(4p)

    《IPD 产品开发流程中的DCP评审要素详解》 IPD(Integrated Product Development,集成产品开发)是一种高效的产品开发模式,它强调跨部门协作,通过多个决策评审点(DCP,Decision Control Point)确保产品开发...

    IPD050N10N5 INFINEON 英飞凌芯片 中文版规格书手册.pdf

    英飞凌的IPD050N10N5是一款高性能的N沟道MOSFET,属于OptiMOS 5系列,适用于高频率开关和同步整流应用。这款芯片的主要特点包括: 1. **N沟道,正常电平驱动**:该器件是N沟道型MOSFET,意味着它需要在栅极和源极...

    集成产品开发(IPD)教材

    #### 九、IPD如何解决产品开发中的问题 1. **明确的目标设定**:通过产品战略规划,确保所有团队都围绕共同的目标努力。 2. **组织结构调整**:建立跨部门团队,打破传统职能部门间的壁垒。 3. **流程规范化**:...

    IPD研发流程推行中遇到地问地的题目解决地要求要求措施下编.pdf

    IPD(Integrated Product Development,集成产品开发)...通过清晰的岗位分工和流程导向的责任界定,促进部门间的协同,共同解决问题。每个角色不仅要关注自身职责,还要与团队其他成员紧密协作,共同推动项目的成功。

    IPD流程操作指引手册.pptx

    IPD流程操作指引手册 IPD流程操作指引手册是指引项目立项、概念阶段、规划阶段和执行阶段的整个项目生命周期的操作指引。该手册提供了详细的项目流程操作指引,旨在确保项目的顺利进行和高效执行。 立项阶段 在...

    IPD培训资料-集成产品开发

    IPD培训教材中提到的中国企业产品研发管理存在的典型问题,主要包括缺乏正确的研发理念、产品规划不足、业务决策评审缺失、组织结构职能化严重、不规范的产品开发流程、项目管理薄弱、技术与产品开发混淆、缺乏共用...

    IPD培训资料网上收集

    5. **案例研究**:通过实际案例,展示IPD在不同行业和公司中的应用,帮助学员理解和掌握IPD的实际操作。 6. **工具与方法**:介绍支持IPD实施的各种工具和技术,如项目管理工具、质量管理工具、敏捷开发方法等。 7...

    IPD项目任务书模版

    华为公司力推的IPD项目任务书模版,内容非常全面,希望对大家有用。

    IPD的基础概念

    经过IBM公司的成功实践与优化,IPD已经演变成一套系统性的研发解决方案,涵盖企业产品开发的各个方面。 IPD的核心思想有八点: 1. 产品开发被视为一种投资行为,需要从投资回报的角度进行管理。 2. 基于市场的创新...

Global site tag (gtag.js) - Google Analytics