如何判断 HTML5 音频元素是否正在使用 Javascript 播放

2024-02-28

我有一个audio网页中的元素,我想确保用户在离开页面时不会仍在播放它。我怎样才能确定audio页面卸载时元素未播放?到目前为止,我有以下代码,但它似乎不起作用;卸载报告时弹出的对话框playing is false即使音频正在播放:

<!DOCTYPE HTML><html>
<head>
    <script><!-- Loading Scripts -->
    function unloadTasks(){
        if (playing && !window.confirm("A podcast is playing, and navigating away from this page will stop that. Are you sure you want to go?"))
            window.alert("Here is where I will stop the page from unloading... somehow");
    }
    </script>
    <script><!-- Player Scripts -->
    var playing = false;
    function logPlay(){
        playing = isPlaying("e1audPlayer");
    }
    function isPlaying(player){
        return document.getElementById(player).currentTime > 0 && !document.getElementById(player).paused &&  !document.getElementById(player).ended;
    }
    </script>
</head>
<body onunload="unloadTasks()">
<audio id="e1audPlayer" style="width:100%;" controls="controls" preload="auto" onplaying="logPlay()" onpause="logPlay()">
    <source src="http://s.supuhstar.operaunite.com/s/content/pod/ADHD Episode 001.mp3" type="audio/mpeg"/>
    <source src="http://s.supuhstar.operaunite.com/s/content/pod/ADHD Episode 001.ogg" type="audio/ogg"/>
    Your browser does not support embedded audio players. Try <a href="http://opera.com/">Opera</a> or <a href="http://chrome.com/">Chrome</a>
</audio>
</body>
</html>

工作示例 http://s.supuhstar.operaunite.com/s/content/pod/playerTest.htm


function isPlaying(playerId) {
    var player = document.getElementById(playerId);
    return !player.paused && !player.ended && 0 < player.currentTime;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何判断 HTML5 音频元素是否正在使用 Javascript 播放 的相关文章

随机推荐

  • 检查是否有元素包含特定的 css 样式

    我想知道元素包含任何 css 样式的检查过程 我有以下 html 代码 ul li text 1 li li text 2 li li text 3 li ul 我想找出样式左侧为 0px 的 li 然后想对该 li 应用更多样式 Than
  • Subsonic - 如何使用 SQL 架构/所有者名称作为命名空间的一部分?

    我刚刚开始使用 Subsonic 2 2 到目前为止印象深刻 认为它会节省我一些认真的编码时间 在我开始全职使用它之前 尽管有些事情困扰着我 我想解决一下 在我当前的数据库 SQL2008 数据库 中 我已按架构 所有者名称将表 视图 sp
  • 是否可以通过插件在 Firefox 上设置配置设置

    我正在寻找一种从网络打印而不提示打印对话框的方法 我刚刚提出了问题 https stackoverflow com questions 5809102 how to print from web without prompting a pr
  • 如何进行函数复合?

    在相当不耐烦地等待 Java 8 发布并阅读精彩文章之后Brian Goetz 的 Lambda 状态 文章 http cr openjdk java net briangoetz lambda lambda state final htm
  • 操作必须使用可更新查询/SQL - VBA

    我正在尝试创建一个非常动态的宏 它将根据用户的选择更新数据库中的不同表 当然 每个表都有不同的标题和信息 我在更新时遇到问题 当用户将新记录添加到旧表时 这是代码的一部分 问题是当它到达 update 时 我收到 操作必须使用可更新查询 错
  • Hibernate:为什么 FetchType.LAZY 注释的集合属性急切加载?

    我尝试实现简单的one to many协会 使用调试模式检查项目对象后 我发现List
  • scrapy中如何根据url过滤重复请求

    我正在使用 scrapy 和 CrawlSpider 为网站编写一个爬虫 Scrapy 提供了一个内置的重复请求过滤器 可以根据 url 过滤重复请求 另外 我可以使用过滤请求rules爬行蜘蛛成员 我想做的是过滤请求 例如 http ww
  • matplotlib:子图背景(轴面+标签)颜色[或图/轴坐标系]

    我有一个包含 3x2 子图的图形 我想在中间一对子图上设置背景颜色 以便更清楚哪些轴标签属于哪个子图 Setting facecolor构建子图时 仅更改轴定义的区域的颜色 刻度线和轴标签仍然绘制在figure patch 假设没有简单的方
  • ionic 使用获取上一页名称

    我用的是离子2 我需要获取上一页的名称 这是我的代码 ViewChild Nav nav Nav constructor this nav app viewDidEnter subscribe view gt console log Cur
  • 在 Openlayers 中单击地图外部时如何激活功能 + 弹出窗口?

    我正在重新解析已加载到地图上的 KML 类似于此处的示例 http openlayers org dev examples sundials html http openlayers org dev examples sundials ht
  • 适用于 SQL Server 的 Microsoft OLE DB 提供程序是否支持 TLS 1.2

    我们的客户端最近从 TLS 1 0 升级到 TLS 1 2 此后我们的软件无法与 SQL Server 连接 它使用 OLE DB 提供程序连接到 SQL 服务器 以下是从 SQL 服务器返回的错误 DBNETLIB ConnectionO
  • 有什么方法可以在不更改格式的情况下比较 Git 中的两个文件吗?

    我已经提交了一些具有某种格式的代码 但源有一些其他格式 审阅者要求我恢复所有更改 我正在寻找一些 UI 工具或 Git 中的某种方式来删除格式并给出实际结果 我想你可能会看看 git diff 特别是以下两个选项 b ignore spac
  • Qt Mac(删除编辑菜单中的“特殊字符...”操作

    我正在 Qt 中开发一个应用程序 它经常重建其菜单 然而 当我们调用clear 并在菜单中重新添加我们想要的操作时 特殊字符 似乎保留在菜单中 有什么方法可以删除或将此操作移动到 QMenu 的底部吗 这是重建菜单的代码 void Main
  • 从用户上下文中的守护进程启动代理

    我有一个启动守护程序 它在 Mac OSX 10 6 计算机的登录上下文中运行 我想从该代理为每个用户启动一个代理 并让该代理在用户的登录上下文中运行 但是 我需要非常仔细地控制代理应用程序的精确参数 这就是为什么我不能使用 launchd
  • 如何在cocos 2d中移动背景

    你好 我想开发像 涂鸦跳跃 这样的游戏 但是我对以下功能有一些问题 1 如何移动背景场景 图像 2 如何检测对象之间的碰撞 是否需要像box2d这样的物理引擎 或者我应该使用手动碰撞 3 背景图片的大小应该是多少 4 事实上我不知道背景是如
  • 解决方案资源管理器中的引用未更新

    我通过解决方案资源管理器添加了对我的 C Windows 项目的一些引用 当我尝试在另一台计算机上加载相同的项目时 我在 Visual Studio 无法检测到的所有引用上看到黄色标记 因此 我安装了所有被引用的库 但 Visual Stu
  • 在继续 Google Apps 脚本之前等待异步请求返回

    我当前正在生成的 Google Apps 脚本中的一些代码需要一个对象来完成 其中一个属性由异步请求的结果设置 这个对象 特别是这个属性 稍后会被使用 但是 由于在需要该属性的函数运行时请求尚未返回 因此它们无法正确评估 我的代码如下 fu
  • 字符数组的初始值设定项字符串太长 C

    我正在开发一个程序 它接受输入并输出与输入相对应的数值 我在 char 部分收到错误 我不明白为什么当数组中只有 27 个字符且大小为 27 时会出现这样的错误 int main char greek 27 ABGDE ZYHIKLMNXO
  • 为三个不同标识符之间的任意匹配组合创建单个 ID

    我的客户数据来自多个不同的系统 具有三个潜在的唯一标识符 我们需要创建一个新 ID 可用于链接三个标识符之间的任何匹配项 数据结构如下 Primary Key CustomerID1 CustomerID2 CustomerID3 1 Al
  • 如何判断 HTML5 音频元素是否正在使用 Javascript 播放

    我有一个audio网页中的元素 我想确保用户在离开页面时不会仍在播放它 我怎样才能确定audio页面卸载时元素未播放 到目前为止 我有以下代码 但它似乎不起作用 卸载报告时弹出的对话框playing is false即使音频正在播放