移动浏览器上的“自动播放”HTML5 音频播放器

2024-02-25

我正在为移动用户创建一个 HTML5 音乐网站。目标是让它完全在移动浏览器中运行。

问题是,当用户选择要播放的曲目时,他们会被带到“播放器”页面。然后我在 HTML5 音频元素中进行 AJAX,并将 autoplay 属性设置为 true。这在桌面上效果很好,但在移动设备上效果不佳。

但到达此页面后,曲目不会播放,用户需要从该播放器页面显式单击“播放”才能开始音频播放。 关于如何调整流程以便音频播放的任何想法autoplay加载播放页面后?

这是我的 HTML 代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="../../favicon.ico">
<title>Mobile Websites</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="css/style.css">
<link rel="stylesheet" type="text/css" href="css/responsive.css">
<link href='http://fonts.googleapis.com/css?family=Open+Sans:400,300,300italic,400italic,600,600italic,700,800,800italic,700italic' rel='stylesheet' type='text/css'>
<script type='text/javascript' src='js/jquery.js'></script>
<script type='text/javascript' src='js/amazingaudioplayer.js'></script>

</head>

<body>
<div class="right-part">
  <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 bg-color">
    <div class="col-lg-2 col-md-2 col-sm-2 col-xs-2">
      <div class="back"><a href="index.html">back</a></div>
    </div>
    <div class="col-lg-10 col-md-10 col-sm-10 col-xs-10">
      <div class="col-lg-9 col-md-9 col-sm-9 col-xs-9">
        <div class="song-name">Player</div>
      </div>
      <div class="col-lg-3 col-md-3 col-sm-3 col-xs-3">
        <div class="playerr"></div>
      </div>
    </div>
  </div>
  </div>
  <div class="bg">
 <div class="container filter-main-div">
    <div class="song-main-div row"> 
      <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 player-div">
   <!--  <ul class="share-song">
    <li><a class="fav" href="#123"></a></li>
   <li><a class="share" href="#123">share</a></li>
    <li><a class="rbt" href="#123">RBT</a></li>
    </ul>-->
      <div id="primary">

    <div class="demo-slider">

    <link rel="stylesheet" type="text/css" media="all" href="css/initaudioplayer.css" />
      <div id="amazingaudioplayer-7" style="display:block;position:relative;width:320px;height:164px;margin:0px auto 0px;"><div class="suffle">Suffle</div>
        <ul class="amazingaudioplayer-audios" style="display:none;">
          <li data-artist="pinkzebra" data-title="In The Moment of Inspiration" data-album="AudioJungle" data-info="" data-image="images/diamon-img.png" data-duration="154">
            <div class="amazingaudioplayer-source" data-src="audio/devesh.mp3" data-type="audio/mpeg" />
          </li>
        </ul>
      </div><div class="play-fav"><a class="fav" href="#123">sdfsdfsdfdsf</a></div>
    </div>
</div>


  <script src="js/initaudioplayer.js"></script> 
</div>
       </div>
    </div>
  </div>


<!-- Bootstrap core JavaScript
    ================================================== --> 
<!-- Placed at the end of the document so the pages load faster --> 
<script type="text/javascript" src="//www.googleadservices.com/pagead/conversion.js"></script>
</body>
</html>

initaudioplayer.js :

jQuery(document).ready(function(){

    var jsFolder = "images";

    jQuery("#amazingaudioplayer-7").amazingaudioplayer({

        jsfolder:jsFolder,

        volumeimagewidth:24,

        barbackgroundimage:"",

        imagewidth:100+'%',

        showtime:true,

        titleinbarwidth:80,

        showprogress:true,

        random:false,

        titleformat:"%TITLE%",

        height:164,

        prevnextimage:"prevnext-48-48-0.png",

        showinfo:true,

        imageheight:100+'%',

        skin:"MusicBox",

        loopimage:"repeat-img.png",

        loopimagewidth:33,

        volumebarheight:80,

        prevnextimageheight:40,

        infoformat:"By %ARTIST% %ALBUM%<br />%INFO%",

        showstop:false,

        showvolumebar:true,

        width:320,

        showtitleinbar:false,

        showloop:true,

        volumeimage:"volume-24-24-1.png",

        playpauseimagewidth:75,

        loopimageheight:36,

        tracklistitemformat:"%ORDER%. %TITLE% %DURATION%",

        prevnextimagewidth:40,

        tracklistarrowimage:"tracklistarrow-16-16-0.png",

        playpauseimageheight:75,

        showbackgroundimage:false,

        progresswidthmode:"fixed",

        stopimage:"stop-48-48-0.png",

        showvolume:true,

        playpauseimage:"playpause-48-48-0.png",

        showprevnext:true,

        backgroundimage:"",

        volumebarpadding:8,

        progressheight:8,

        showtracklistbackgroundimage:false,

        progresswidth:296,

        showtitle:true,

        tracklistarrowimageheight:16,

        heightmode:"fixed",

        titleinbarformat:"%TITLE%",

        showtracklist:true,

        stopimageheight:48,

        volumeimageheight:24,

        stopimagewidth:48,

        tracklistbackgroundimage:"",

        showbarbackgroundimage:false,

        showimage:true,

        tracklistwidth:320,

        tracklistarrowimagewidth:16,

        timeformat:"%CURRENT% / %DURATION%",

        autoplay:true,

        loop:1,

        tracklistitem:10

    });

});

这个问题之前在其他地方已经回答过。

具体针对苹果设备:

  • Can you autoplay HTML5 videos on the iPad? https://stackoverflow.com/questions/12496144/can-you-autoplay-html5-videos-on-the-ipad
    • “Apple 已决定通过脚本和属性实现禁用 iOS 设备上视频的自动播放。在 iOS 上的 Safari(适用于所有设备,包括 iPad)中,用户可能使用蜂窝网络并需要付费每个数据单元,预加载和自动播放被禁用。在用户启动之前不会加载任何数据。”
  • Safari HTML5 Audio and Video Guide - iOS-Specific Considerations https://developer.apple.com/library/safari/documentation/audiovideo/conceptual/using_html5_audio_video/device-specificconsiderations/device-specificconsiderations.html
    • “在 iOS 上的 Safari 中(对于所有设备,包括 iPad),用户可能使用蜂窝网络并按数据单位付费,预加载和自动播放被禁用。在用户启动之前不会加载任何数据。这意味着 JavaScript play() 和 load() 方法在用户启动播放之前也是不活动的,除非 play() 或 load() 方法是由用户操作触发的。换句话说,用户启动的 Play 按钮可以工作,但 onLoad=" play()" 事件没有。"

谷歌搜索会揭示更多。

我在一些地方读到,Android 上的 Chrome 也有这种行为,但其他 Android 浏览器可能不会。

这如何具体适用于您的案例:

通常,如果播放器位于同一页面,则只需单击链接即可正常工作,因为对该链接的单击将被视为启动媒体播放的有效用户交互。但是,您正在加载一个新页面,这会重置此用户交互检查,因此在用户以某种方式与新页面交互之前媒体不会启动。因此,用户必须滚动、触摸、点击、滑动或其他操作,才能自动播放,或者只需点击媒体播放器上的播放按钮。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

移动浏览器上的“自动播放”HTML5 音频播放器 的相关文章

随机推荐

  • 在 React JS 的回调中使用自定义钩子

    我有这个自定义钩子 const useSomething gt const displayAlert text gt alert text return displayAlert 现在我想在我的代码中的某个地方使用它 如下所示 const
  • 如何使请求绑定的数据在 Ktor 中全局可用?

    我正在 Ktor 中构建微服务 当我们在应用程序模块中工作时 Ktor 提供对call包含授权数据的对象 我的问题是我需要访问call来自服务级别类的对象 在 Spring 中 您可以通过访问SecurityContext这是全球可用的Th
  • 如何在CKeditor中添加音频标签

    我已经添加了html5audio插件并能够获取上传按钮 但如何将上传的文件发送到服务器 这是我的插件代码 id Upload hidden false filebrowser uploadButton label editor lang h
  • Bash 脚本在 Linux 中将 pdf 打印为 pdf

    这个问题可能听起来有点奇怪 但实际任务相对简单 我发誓 我使用 PDFCreator 将生成的 FDF 合并到预先存在的 PDF 中 从 Web 表单自动生成一些 PDF 我在 NitroPDF 中创建了预先存在的 PDF 此设置有效gre
  • 如何使用 Ruby 和 eventmachine 进行日志记录?

    我正在使用 Ruby 和 Eventmachine 库编写一个应用程序 我真的很喜欢非阻塞 I O 和事件驱动系统的想法 我遇到的问题是日志记录 我正在使用 Ruby 的标准记录器库 这并不是说日志记录需要永远进行 但它似乎不应该被阻止 但
  • TestNG - 将自定义属性添加到@Test注释

    我需要向现有的 Test 注释添加自定义属性 如下所示 Test description some description newAttribute some value public void testMethod unit integr
  • WordPress 从 get_the_tag_list 中排除标签

    当我使用自定义模板标签输出单个帖子标签时 如何从标签列表中排除已定义的标签名称 好吧 没有过滤器可以删除其中的术语get the tag list但在内部它要求get the terms所以你可以在那里添加过滤器 考虑这个例子 add fi
  • 无法找到或加载 Qt 平台插件“windows”

    首先 为了防止重复报告 我尝试了多种解决方案here https stackoverflow com questions 17366967 failed to load platform plugin windows available p
  • 运行时错误无法解析 GoogleMap 的所有参数:(?, ?)

    我正在尝试将基本地图加载到我的模板上 我只是按照这个说明操作https ionicframework com docs native google maps https ionicframework com docs native goog
  • htaccess 301 仅重定向根目录,但排除所有文件和子文件夹(有例外)

    我不是程序员 htaccess代码 我阅读了其他相关帖子但不明白它们 他们没有一个做我需要的事情 我有一个运行在以下位置的 WordPress 网站http example com main但想重定向http example com to
  • Renderscript 无法运行的设备列表

    我的应用程序需要 Renderscript 因为它执行一些在 Java 中需要几秒钟的图像处理 在发布之前 我已经在许多设备上测试了它 甚至是一些较旧的型号 例如 Samsung Galaxy Tab 2 API 17 并且即使在这些设备上
  • 添加新节点时,链表的浅拷贝不反映更改

    I have done a lot of readings but seems like I can t clear my confusion without asking here Based on the diagram when I
  • 全部连接关闭时的任务

    我正在尝试使用 Task WhenAll 执行多个 SqlDataReaders 但是当任务等待时我得到 System InvalidOperationException 无效操作 连接 关闭了 创建任务 List
  • 在哪里可以找到 Visual Studio 中安装的 TypeScript 版本?

    也许这是显而易见的 但我检查了所有地方 除了正确的地方 并用谷歌搜索了它 没有什么 如果您只为 Visual Studio 安装了 TypeScript 则 开始Visual Studio 命令提示符 https msdn microsof
  • Apache代理负载均衡后端服务器故障检测

    这是我的场景 由我的前任设计 两台 Apache 服务器为多个混合后端 Web 服务器 Apache IIS Tomcat 等 提供反向代理服务 有些网站我们有多个后端 Web 服务器 在这些情况下 我们会执行以下操作
  • 恢复 Github Desktop 中丢失的隐藏更改 (Windows 10)

    作为初学者使用 Github Desktop Windows 10 上的 v 2 9 6 当在分支之间来回移动时 我会存储更改以将其保留在分支上以供以后使用 但是连续执行两次 它实际上会覆盖并删除之前的存储 而不是将更改堆叠到存储中 因此我
  • Visual Studio 自动完成 C++ 的 Doxygen 标签

    有没有办法让 Visual Studio 自动将 doxygen 标签放入 C 源文件中 我的意思是例如这段代码 int foo bool p 如果我输入 在其之上 Visual Studio 自动生成以下行
  • 负整数返回零

    一位朋友只是抛出了一些类似于以下 C 代码的代码 int i return i lt 0 0 i 这让我思考 有什么 不同 的方式来返回负整数零或当前正值 更具体地说 如果可能的话 我正在寻找按位运算 顺便说一句 我知道Math Max 0
  • 如何在这个程序中使用枚举?

    f open Student dat r opens Student dat file roll1 input Enter roll to be found to find a record in a list using a roll n
  • 移动浏览器上的“自动播放”HTML5 音频播放器

    我正在为移动用户创建一个 HTML5 音乐网站 目标是让它完全在移动浏览器中运行 问题是 当用户选择要播放的曲目时 他们会被带到 播放器 页面 然后我在 HTML5 音频元素中进行 AJAX 并将 autoplay 属性设置为 true 这