在react-js中播放声音

2024-02-22

我尝试在react-js 上播放声音,但无法启动。 在获取 InitialState 之前,我在 ReactClass 中初始化了声音变量:

var App = React.createClass({
audio: new Audio('files/audio.mp3'),
getInitialState: function () {
return {
  playSound: false,
   ........
 }
}

这是我用于启动和停止的功能:

   playSound: function() {
if(!this.state.playSound){
    this.setState({
        playSound: true,
    }, function(){
      console.log("play sound 1");
      this.audio.play();
      console.log("play sound 2");
    });
}
},

stopSound: function() {
if(this.state.playSound){
    this.setState({
        playSound: false,
    }, function(){
        console.log("stop sound 1");
        this.audio.pause();
        console.log("stop sound 2");
    });
}
},

但我得到了这个答案:

react-app.js:346 Uncaught (in promise) DOMException: The element has no supported sources.

我已经尝试过使用 .mp3 和 .wav 文件。但它不会启动。我究竟做错了什么?

!!!编辑: 还尝试添加 HTML 项目:

  <audio id="beep" loop>
         <source src="files/ring.wav" type="audio/wav" />
      </audio>

并具有以下启动/停止:

  playSound: function() {
if(!this.state.playSound){
    this.setState({
        playSound: true,
    }, function(){
      console.log("play sound 1");
      var audioElement = document.getElementById('beep');
      audioElement.setAttribute("preload", "auto");
      audioElement.autobuffer = true;
      audioElement.load();
      audioElement.play();
      console.log("play sound 2");
    });
}
},

stopSound: function() {
if(this.state.playSound){
    this.setState({
        playSound: false,
    }, function(){
        console.log("stop sound 1");
        var audioElement = document.getElementById('beep');
        audioElement.pause();
        console.log("stop sound 2");
    });
}
},

然后我在启动时没有收到错误,但它没有启动。当我按下暂停键时,我得到:

Uncaught (in promise) DOMException: The play() request was interrupted by a call to pause().

!!!编辑2:

我还注意到,如果我设置按钮,就会播放声音。如果我打开文件管理器,转到我的 index.html 并打开它,它就可以正常工作。如果我尝试从 webpack-server: localhost:8000/app/index.html 访问该页面,它将无法工作。得到相同的 DOMException。为什么是这样?


经过一段时间的尝试,我在我的 index.html 文件中制作了 2 个按钮,1 个用于启动声音,一个用于停止。所以我尝试了,我注意到它可以在我的文件管理器中运行,但如果我从 webpack 服务器尝试则不行。 所以我检查了我的路径,而不是: “files/audio.mp3”我将其更改为“../files/audio.mp3”。这是一个菜鸟错误,但这就是当你让 Android 开发人员使用 javascript 工作时会发生的事情:)))

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

在react-js中播放声音 的相关文章

随机推荐

  • ProgressDialog 动画在较大的 setText() 上暂停

    我正在尝试在 EditText 中设置大文本 该操作可能需要 30 秒以上 因此我使用 ProgressDialog 它会显示 但没有动画 然后在操作完成后消失 这是我的简化代码 class FileOpener extends Async
  • 如何在点宏中访问案例类的参数列表

    我正在尝试在 dotty 中学习元编程 特别是编译时代码生成 我认为通过构建一些东西来学习是一个很好的方法 所以我决定制作一个 CSV 解析器 它将行解析为案例类 我想使用点宏来生成解码器 trait Decoder T def decod
  • 为什么需要 Server.HtmlEncode?

    我无法理解为什么需要 Server HtmlEncode MSDN 指出它用于将潜在不安全的字符编码为 HTML 编码的等效字符 有人可以告诉我这些字符如何不安全并要求我们使用 Server HtmlEncode 吗 Thanks 字符可能
  • 使用 Win API 确定可执行文件的实例是否已在运行

    我需要确保我的 C 应用程序只有 1 个实例正在运行 我该如何使用 Win API 检索有关我当前应用程序的信息 GetCurrentProcess 会给我一个关于我的应用程序的句柄 我如何检索有关它的信息 检索用户所有正在运行的进程的列表
  • 如何在 Android Oreo 中管理来自未知来源的安装?

    在 Android Oreo 8 0 中 对如何允许安装来自未知来源的应用程序 从用户的角度来看 以及获取安装权限的过程 从开发人员的角度来看 进行了一些更改 由于我发现在开发人员方面找到所有必要的步骤特别困难 因此我认为在这里询问解决方案
  • 比较 Haskell 中的函数

    有什么方法可以比较 Haskell 中的两个函数吗 我的想法是答案是否定的 因为函数不会派生 Eq 类型类 然而 我正在尝试编写一个非常简单的函数 这似乎是一件正常的事情 search Enum a gt a gt a gt Card gt
  • 如何将 readLines 的输出转换为 R 中的数据帧

    我有一个包含多行的 txt 文件 每行都是由空格分隔的文本 每行中的列数可能不同 我需要一次读取每一行 将其放入数据框中并打印 我试过这个 x lt readLines output txt for i in 2 length x data
  • 为什么二叉树的插入方法中根总是为空

    我正在尝试为 BST 类实现递归插入节点方法 public void insertNode Node r Node n if r null System out println r n n data r n else System out
  • Django - CreateView - 如何声明变量并在模板中使用它

    如何在 Django 的 Createview 中声明变量 以便我可以从其模板中使用它 例如 我想在模板中使用 place slug 我从 urls py 传递它 如下所示 urls py urlpatterns patterns r ne
  • React Native - 垂直对齐图像,调整大小模式“包含”

    当图像具有 包含 调整大小模式时 它似乎在中心对齐 对齐实际图像 但图像内容在 Flex 启动时对齐 对齐
  • Socket.io 检测客户端何时断开连接

    我正在编写一个应用程序 当用户访问我的站点时 我打开一个套接字 当用户位于站点上时通过套接字发送数据来记录信息 并在用户离开站点时将信息存储在数据库中 我当前面临的问题是 虽然我可以检测到套接字何时与服务器断开连接 但我不知道哪个套接字对应
  • XML 到 C# 类中的 StackOverflowException

    我正在尝试基于以下 XML 代码在 C 中创建一个类
  • dbo.数据库对象名称中的前缀,我可以忽略它吗?

    我正在寻找一个高性能的默认策略来处理 dbo 前缀 我意识到 dbo 前缀不仅仅是语法噪音 但是我在过去 8 年的基于 MS 的开发中跳过了 dbo 的输入 前缀并忽略其功能 除了存储过程编译锁的性能问题之外 在 SQL 查询和存储过程中跳
  • 如何将必要的文件包含到独立客户端项目的输出中?

    我的解决方案包括 Client 启动项目 UI层 依赖于取决于 App App 库 应用层 汇编器 依赖于取决于 Lib1 Lib1 库 业务逻辑层 需要特定文件才能正常工作 ThirdParty dll 我已经添加ThirdParty d
  • SQL Server CE数据库大小问题

    我有一份来自一家倒闭公司的申请 它似乎使用 SQL Server CE 数据库 我搜遍了系统也没找到 sdf文件 看来数据库已经变得太大了 知道如何找到数据库并更改最大大小吗 错误信息 无法记录应用程序启动 System Data Enti
  • 最长公共子序列:为什么这是错误的?

    int lcs char A char B int m strlen A int n strlen B int X malloc m sizeof int int Y malloc n sizeof int int i int j for
  • 将 MVC 2 升级到 MVC 3 视图问题

    我正在尝试将现有的 ASP net MVC 2 Web 应用程序升级到 MVC 3 这样我就可以使用 Razor Viewengine 等的优点said http weblogs asp net scottgu archive 2010 0
  • 如何在Python中使图像适合标签

    所以在 python 中我有一个用于显示图像的标签 但图像相当大 超出了标签的大小 有没有办法加载图像以适合标签而不调整它们的大小 这就是我现在所做的 labelWidth top winfo screenwidth labelHeight
  • Railsauthenticate_or_request_with_http_basic

    在我的 RoR 应用程序中 我需要使用基本身份验证来保护页面 并且我希望每次用户链接到该页面时都会询问凭据 所以我在操作之前添加了一个过滤器 如下所示 before filter request confirm only gt delete
  • 在react-js中播放声音

    我尝试在react js 上播放声音 但无法启动 在获取 InitialState 之前 我在 ReactClass 中初始化了声音变量 var App React createClass audio new Audio files aud