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

在移动浏览器中播放拖放音频

如何解决《在移动浏览器中播放拖放音频》经验,为你挑选了1个好方法。

我有一个拖放的网站,可用于计算机,平板电脑和手机.它使用jQuery,jQuery UI和jQuery UI Touch Punch.拖动会导致播放短音频片段,同时播放也会播放.这个小提琴有一个例子.

不幸的是,在当前版本的iOS Safari和Android Chrome中,音频无法正常工作.有办法解决这个问题吗?

此图像解释了各种浏览器版本中的行为:

图片说明:

iOS Safari:在iOS 8.4及更低版本中,拖动音频和丢弃音频都会播放.在iOS 9.0及更高版本中,拖动音频和丢弃音频都不会播放.

Android Chrome:在版本51.0.2704.81中,拖动音频和丢弃音频都会播放.在版本52.0.2743.98和版本55.0.2883.91中,拖动音频和丢弃音频都不会播放.在版本56.0.2924.87和63.0.3239.111中,拖动音频不播放,但丢弃的音频播放.

这是代码,如果小提琴消失了:


  
    
    
    
    
    
    
  
  
    

Drag me to my target

Drop here

Enable any DOM element to be droppable, a target for draggable elements.

Munim Munna.. 6

由于诸多原因,播放音频现在在移动设备中受到很大限制,以改善烦人广告的用户体验.你可以在这里详细阅读.

现在,您需要通过有效的用户手势事件播放音频元素.这就是你的drop事件正在工作但拖动事件不起作用的原因.

在这种情况下,Click事件最可靠.您所要做的就是首先通过点击事件播放音频,这将激活音频,然后您可以随后播放任何事件.

在这种情况下,最佳做法是让用户在执行任何操作之前单击按钮,然后静默播放音频,或者只播放音频的最后一个mili-second,这通常是静音.然后音频元素工作得很好.

$("#ibutton").click(function(){
    enable_audio($('#audio-drag'));
    enable_audio($('#audio-drop'));
});

启用功能仅播放最后一毫秒.

function enable_audio(el){
    var myaudio=el[0];
    if(el.data('audio_enabled'))return;
    myaudio.currentTime=myaudio.duration-1;
    myaudio.play().then(function(){myaudio.pause();myaudio.load();});
    el.data('audio_enabled',true);
}

这是一个有效的JSFiddle演示.



1> Munim Munna..:

由于诸多原因,播放音频现在在移动设备中受到很大限制,以改善烦人广告的用户体验.你可以在这里详细阅读.

现在,您需要通过有效的用户手势事件播放音频元素.这就是你的drop事件正在工作但拖动事件不起作用的原因.

在这种情况下,Click事件最可靠.您所要做的就是首先通过点击事件播放音频,这将激活音频,然后您可以随后播放任何事件.

在这种情况下,最佳做法是让用户在执行任何操作之前单击按钮,然后静默播放音频,或者只播放音频的最后一个mili-second,这通常是静音.然后音频元素工作得很好.

$("#ibutton").click(function(){
    enable_audio($('#audio-drag'));
    enable_audio($('#audio-drop'));
});

启用功能仅播放最后一毫秒.

function enable_audio(el){
    var myaudio=el[0];
    if(el.data('audio_enabled'))return;
    myaudio.currentTime=myaudio.duration-1;
    myaudio.play().then(function(){myaudio.pause();myaudio.load();});
    el.data('audio_enabled',true);
}

这是一个有效的JSFiddle演示.


推荐阅读
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • 在PHP中实现腾讯云接口签名,以完成人脸核身功能的对接与签名配置时,需要注意将文档中的POST请求改为GET请求。具体步骤包括:使用你的`secretKey`生成签名字符串`$srcStr`,格式为`GET faceid.tencentcloudapi.com?`,确保参数正确拼接,避免因请求方法错误导致的签名问题。此外,还需关注API的其他参数要求,确保请求的完整性和安全性。 ... [详细]
  • WinMain 函数详解及示例
    本文详细介绍了 WinMain 函数的参数及其用途,并提供了一个具体的示例代码来解析 WinMain 函数的实现。 ... [详细]
  • 微信公众号推送模板40036问题
    返回码错误码描述说明40001invalidcredential不合法的调用凭证40002invalidgrant_type不合法的grant_type40003invalidop ... [详细]
  • Framework7:构建跨平台移动应用的高效框架
    Framework7 是一个开源免费的框架,适用于开发混合移动应用(原生与HTML混合)或iOS&Android风格的Web应用。此外,它还可以作为原型开发工具,帮助开发者快速创建应用原型。 ... [详细]
  • 本文深入解析了 Kubernetes 控制平面(特别是 API 服务器)与集群节点之间的通信机制,并对其通信路径进行了详细分类。旨在帮助用户更好地理解和定制其安装配置,从而增强网络安全性,确保集群的稳定运行。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 为开发者提供了一系列实用的参考网站和资源链接,包括HTML速查手册( 和 ),帮助开发者快速查找和学习相关技术知识。此外,还涵盖了其他重要的开发工具和文档,为编程工作提供全面支持。 ... [详细]
  • SSL 错误:目标主机名与备用证书主题名称不匹配
    在使用 `git clone` 命令时,常见的 SSL 错误表现为:无法访问指定的 HTTPS 地址(如 `https://ip_or_domain/xxxx.git`),原因是目标主机名与备用证书主题名称不匹配。这通常是因为服务器的 SSL 证书配置不正确或客户端的证书验证设置有问题。建议检查服务器的 SSL 证书配置,确保其包含正确的主机名,并确认客户端的证书信任库已更新。此外,可以通过临时禁用 SSL 验证来排查问题,但请注意这会降低安全性。 ... [详细]
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • 在Java分层设计模式中,典型的三层架构(3-tier application)将业务应用细分为表现层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。这种分层结构不仅有助于提高代码的可维护性和可扩展性,还能有效分离关注点,使各层职责更加明确。通过合理的设计和实现,三层架构能够显著提升系统的整体性能和稳定性。 ... [详细]
  • 基于Dubbo与Zipkin的微服务调用链路监控解决方案
    本文提出了一种基于Dubbo与Zipkin的微服务调用链路监控解决方案。通过抽象配置层,支持HTTP和Kafka两种数据上报方式,实现了灵活且高效的调用链路追踪。该方案不仅提升了系统的可维护性和扩展性,还为故障排查提供了强大的支持。 ... [详细]
  • 利用 Zend Framework 实现高效邮件发送功能 ... [详细]
author-avatar
叶小丹丶丶01_520
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有