Javascript:无法播放wav文件

2024-03-22

基于 StackExchange 的代码,我编写了打开 wav 文件的代码。 wav 文件本身是一个有效的文件,因为它可以与我的 Python 程序一起正常播放。但 javascript 函数不起作用。声音文件与我的 html 文件位于同一文件夹中。

<div id="play_or_pause_or_exit">    
<button onclick="playAudio()" type="button" id="play"       style="display:inline-block;">Play table</button>
<button onclick="pauseAudio()" type="button"  id="pause" style="display:inline-block;">Pause table</button> 
<button onclick="cancelAudio()" type="button"  id="cancel" style="display:inline-block;">Exit tables</button> 
<script>
var audio;

function setupAudio(){
var audio = new Audio('plus1_071016_Alex.WAV');
}

function playAudio(){
    audio.play();
}   

function pauseAudio(){
    audio.pause();
}

function cancelAudio(){
    audio.pause();
sound.currentTime = 0;
}

</script>

</body>
</html>

任何帮助,将不胜感激。


查看脚本的第一行:

var audio;

function setupAudio(){
    var audio = new Audio('plus1_071016_Alex.WAV');
}

您正在使用同名变量将全局变量 audio 屏蔽到 setupAudio 函数中。这样,辅助函数将无法访问您的 Audio 对象播放音频, 暂停音频 and 取消音频。我假设在您的代码中的某个位置(样本中未显示)您将调用 setupAudio 函数。

一个快速且real肮脏的解决方案:将 var 关键字删除到函数中,瞧:你污染了你的全局环境,但你的代码应该可以工作。

我会遵循稍微不同的路线,使用简单的模块模式:

the css

我更喜欢将样式放在头部远离元素标签的地方:它们分散了我的注意力

<style>
    #play_or_pause_or_exit > button { display: inline-block; }
</style>

the HTML

我重新格式化了您的按钮标签,以适应 stackoverflow 上狭窄的文本区域;-P,删除了内联样式并添加了禁用属性,以防止用户在音频准备好之前单击按钮。

<div id="play_or_pause_or_exit">    
    <button onclick="Player.play()" 
            type="button" 
            id="play"
            disabled>Play/Resume table</button>
    <button onclick="Player.pause()" 
            type="button"
            id="pause"
            disabled>Pause table</button> 
    <button onclick="Player.stop()" 
            type="button"
            id="cancel"
            disabled>Exit tables</button> 
</div>

JavaScript

我会在正文底部的某个地方放置以下脚本:

var Player = (function (audiourl) {

    var audio = new Audio(audiourl);

    [].forEach.call(
        document.querySelectorAll("#play_or_pause_or_exit > button"),
        function(x) {
            x.disabled=false;
        });

    return {
        "play": function() { audio.play(); },   
        "pause": function() { audio.pause(); },
        "stop": function() {
            audio.pause();
            audio.currentTime = 0;
        },
    };
})("plus1_071016_Alex.WAV");

Player 现在是一个 IIFE(立即调用函数表达式),它创建一个封装音频资源的对象play, pause and stop控制资源的方法。

请注意,音频 url 现在位于声明的底部,并且一旦定义了生成函数,它就会被加载,正如您可能从函数表达式名称中猜到的那样。

全局环境仍然受到污染,但只是被封装了辅助函数和要播放的资源的单个对象所污染。单点访问与四个函数和一个资源变量。

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

Javascript:无法播放wav文件 的相关文章

  • Sequelize.js 中的自定义或覆盖连接

    我需要使用创建自定义连接条件Sequelize js http sequelizejs com使用 MSSQL 具体来说 我需要加入TableB基于一个COALESCE中的列的值TableA and TableB并最终得到这样的连接条件 L
  • iOS:如何在不降低 fps 的情况下播放音频?

    我正在使用 Sprite Kit 最好使用 Swift 库 为 iOS 9 开发游戏 目前 我正在使用 Singleton 在其中预加载音频文件 每个文件都连接到一个单独的 AVAudioPlayer 实例 这是一个简短的代码片段来了解这个
  • 是否可以在没有 Javascript(仅 CSS)的情况下执行相同的操作(悬停效果)?

    我正在尝试创建一个带有图标的按钮像这样 http jsfiddle net pRdMc HTML div div class icon div span Send Email span div CSS button width 270px
  • 使用 获取用于 javascript 的 RSA 密钥?

    我的 Web 项目需要一个 RSA 密钥对 虽然有一些库 但我认为依靠浏览器 为了安全性和速度 为我生成密钥是个好主意 是否可以使用注册机或其他浏览器 API 来执行此操作 我不知道如何从注册机获取密钥 它们似乎是在提交时生成的 但我不想将
  • Google reCaptcha 永远加载

    我在我的网站上使用 Google 的 reCaptcha 2 0 它曾经运行良好 但自从我向公众开放我的网站并获得了更多用户后 recaptcha 不再适用于大多数用户 它加载得很好 但一旦用户单击 我不是机器人 复选框 它会永远加载并且从
  • 使用 npm 作为构建工具连接文件

    我最近发现我可以使用 npm 作为任务运行程序 而不是 gulp 或 grunt 到目前为止 一切都很棒 lint stylus jade uglify watch 等 但串联部分 我似乎无法实现 gulp 是这样的 gulp task s
  • 如果浏览器在 asp .net 中关闭,请从浏览器中注销?

    我的要求有点复杂 用户正在使用 Web 浏览器访问数据库 而在访问数据库时 如果用户关闭活动页面而不是注销会话 该会话需要自动注销 有人可以指导我如何做这个吗 我在母版页中使用了jquery onbeforeunload 我收到消息离开页面
  • 将数组转换为具有默认值的对象的更简洁方法? (洛达什可用)

    我有一个数组 比如说 a b c 我想将其转换为一个对象 该对象以数组值作为键和我可以设置的默认值 所以如果默认值是true 我希望我的输出是 a true b true c true 下面的代码是否有更简洁的版本来实现此目的 var my
  • 夜间值班。单击带有文本的元素

    我遇到问题 无法单击具有某些独特文本的网页元素 我有这样的结构 div class wg wagon type title Text div 我试试这个 click wg wagon type title contains Text 但我有
  • TRACKER:错误TRK0005:无法找到:“CL.exe”。该系统找不到指定的文件

    我尝试在 Windows 8 上的 Node js 项目中执行以下命令 npm 安装 电子邮件受保护 cdn cgi l email protection 但我收到一个错误 我不知道如何处理 TRACKER 错误TRK0005 无法找到 C
  • 获得一次性绑定以适用于 ng-if

    这个问题已经被之前问过 https stackoverflow com questions 23969926 angular lazy one time binding for expressions 但我无法让该解决方案发挥作用 所以我想
  • 删除 Laravel Mix 中的临时文件

    我想在 laravel mix 构建期间或之后删除临时构建文件 这是我目前拥有的一些代码 但是del不工作 const mix require laravel mix const del require del compile sass i
  • 无法在渲染器进程中使用 Node.js API

    无法在 Electron 中使用任何与 Electron 或节点相关的操作 未定义获取错误过程 我检查了他们指导添加节点支持的各个地方 但这已经完成了 所以卡在这里 我的主要应用程序代码是 const electron require el
  • PhantomJS 网页内存消耗?

    是否有一种编程方式 因为我想在运行时自动执行 方式来查看网页在通过 PhantomJs 运行时使用了多少内存 我也在使用 casperjs 如果这有帮助的话 我已经搜索了很多但没有找到任何方法 PhantomJs 使用 QtWebKit 因
  • 如何生成 JavaScript 堆栈跟踪? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 关于如何以跨浏览器的方式在 javascript 中生成堆栈跟踪有什么建议吗 较新的浏览器 Chrome 和 Firefox 公开了一个允
  • 如何在 JavaScript 中对关联数组进行排序?

    我需要为我的一个项目通过 JS 对关联数组进行排序 我发现这个函数在 Firefox 中运行得很好 但不幸的是它在 IE8 OPERA CHROME 中不起作用 无法找到使其在其他浏览器中运行的方法 或者找到另一个适合该目的的函数 我真的很
  • 如何使用 Jest 测试对象键和值的相等性?

    我有一个mapModule我在其中导入组件并导出它们 import ComponentName from components ComponentName export default name ComponentName 我该如何测试ma
  • 如何从配置加载套接字 io 事件监听器? [复制]

    这个问题在这里已经有答案了 我有使用套接字io 的nodejs 应用程序 我将存储在 config routes js 中的所有事件侦听器 module exports routes auth login controller auth a
  • 如何设置 Firebase 用户的显示名称?

    根据Firebase网站上的JS Auth文档 它只展示了如何获取 displayName 以及如何更新 displayName 所以我尝试更新它 但这有点不合逻辑 因为你怎么能在不创建某些东西的情况下更新它呢 所以我的问题是 如何设置注册
  • 使用 JQuery 预填充选择字段的下拉选项验证

    我有这个 JQuery 片段来防止选择已在另一个字段中选择的下拉选项 var coll select name service on change function coll each function var val this value

随机推荐

  • SoX 使用 ProcessBuilder 运行缓慢

    我正在使用 java 中的 ProcessBuilder 来运行 SoX 它将 WAV 文件修剪为 30 秒长的 WAV 文件 SoX 正在运行 因为我可以成功修剪文件的前 30 秒并将其保存为新文件 但它停在那里 但它仍在运行 这是命令生
  • 在存储到 mysql 数据库之前压缩文本

    我正在使用 php 和 MySQL 开发一个 Web 应用程序 在存储在 MySQL 数据库中 在数据库中存储压缩形式的文本之前 我使用 gzcompress php 函数压缩文本 我的问题是这样可以吗 存储压缩形式 或者这个方法会不会给我
  • 使用 Android 相机进行图像处理

    我想使用 onPreviewFrame 在将图像显示给用户之前对其进行后处理 即应用色调 棕褐色等 据我了解 返回给回调的 byte 数据以 YUV420sp 编码 人们是否已经在 J ava 中或使用 NDK 本机代码 将其解码为 RGB
  • Scala dropWhile 与过滤器

    val xs Iterator from 1 dropWhile 2 0 takeWhile lt 10 toList val ys Iterator from 1 filter 2 0 takeWhile lt 10 toList pri
  • 如何用python生成a-z范围内的随机值

    我有 python 代码 它将生成随机值 例如 JAY5uFy4F 这是我运行 python 脚本时的第一个输出 这是我的代码 a n 1 c 1 c2 3 Start 10 n 1 End 10 n 1 while 1 Num rando
  • “无法找到一组匹配的功能”——Selenium 与 Python 2.7

    将 Selenium 3 8 1 与 Python 2 7 和 Firefox Portable 54 64 位结合使用 运行此脚本时收到以下错误消息 from selenium import webdriver from selenium
  • 了解 Azure Functions 高级计划计费

    我一直在阅读有关此问题的各种文档 但无法清楚地确认我的理解 我们正在评估 Azure Functions Premium Plan 并希望对成本有更清晰的了解 我的理解如下 在高级计划中 我们可以配置最小实例数和突发大小 这是高级计划实例的
  • Android SDK 管理器下载完成后校验和错误?

    I am using Android SDK Manager revision 23 0 5 I tried to update some SDK but got this errors I tried a lot of times And
  • 测量Java中单链表的大小/长度?

    我需要帮助int size Java 中单向链表的方法 这是我到目前为止所拥有的 但它没有返回列表的正确大小 public int size int size 0 Node CurrNode head while CurrNode next
  • 如何限制 Sinatra/Active Record 中数据库字符串值的字符/字数?

    我的专栏里有一个ActiveRecord我想要有一定字数限制的数据库 本质上 我创建了一个允许用户输入文本 字符串 的表单 我想限制该字符串中允许的字符数 allposts Post limit 20 这是我到目前为止在 get 方法中所拥
  • 使用服务名称在 docker-compose React 容器中调用 API 到 django 容器

    我有一个 docker compose 其中包含一个 React 应用程序和其他 django 容器 它们位于同一网络中 因此当我尝试使用服务名称从 React 容器向其中一个 django 服务发出curl 请求时 它可以工作 但在 We
  • 如何强制 XmlWriter 正确处理命名空间?

    我想使用 XmlWriter 编写类似这样的内容 全部在一个命名空间中
  • Code First 实体框架为主键列名称添加下划线

    我有一个域类的流畅映射 它定义了每列的名称 包括由两列组成的主键 NotificationId 和 IdentityId 这些也是分别指向Notification Id和Identity Id的外键 每当我使用此映射作为查询的一部分时 它都
  • 解决具有最大变量的优化问题

    原始问题 在给定收益矩阵的情况下找到玩家一的最佳混合策略 0 2 1 1 3 4 0 5 1 3 0 2 1 1 2 1 我有以下最大化问题 最大电压 s t3p1 p3 2p4 2p1 4p2 3p3 p4 p1 2p4 p1 5p2 2
  • Symfony 3 - 将控制器代码外包到服务层

    我对 Symfony 3 很陌生 我想避免 我的控制器中的业务逻辑 到目前为止我所做的是
  • 正则表达式获取VB.Net源代码中的注释

    我在 vb net 中有一个语法高亮功能 例如 我使用正则表达式来匹配 IF 然后将其着色为蓝色 在我尝试弄清楚如何进行评论之前 这一切都很完美 我为评论编写的语言可以是如果该行以单引号 开头 或者如果该行中的任何位置有两个单引号 this
  • 使用非可选但可能未定义的字段指定 Zod 架构

    是否可以使用可能的字段定义 Zod 模式undefined 但不是可选的 在 TypeScript 中 这是以下之间的区别 interface IFoo1 somefield string undefined interface IFoo2
  • Callkit可以与非voip通话一起使用来获取ios中的通话状态吗?

    我已阅读有关进行非 voip 呼叫的问题 看来开放网址是唯一的方法 由于 CoreTelephony 已被弃用 当使用开放的 url 进行呼叫时 是否可以使用 Callkit 来获取呼叫状态 如果没有 有什么方法可以以编程方式获取呼叫状态
  • Margin-Top 将外部 div 向下推

    我有一个标题 div 作为包装 div 中的第一个元素 但是当我向标题 div 内的 h1 添加上边距时 它会将整个标题 div 向下推 我意识到每当我将上边距应用于页面上的第一个可见元素时就会发生这种情况 这是一个示例代码片段 谢谢 di
  • Javascript:无法播放wav文件

    基于 StackExchange 的代码 我编写了打开 wav 文件的代码 wav 文件本身是一个有效的文件 因为它可以与我的 Python 程序一起正常播放 但 javascript 函数不起作用 声音文件与我的 html 文件位于同一文