使用 jQuery/Javascript 播放歌曲

Posted

技术标签:

【中文标题】使用 jQuery/Javascript 播放歌曲【英文标题】:Playing a song using jQuery/Javascript 【发布时间】:2017-11-11 22:24:03 【问题描述】:

当文件收到来自 Arduino 的 'playMusic' 事件时,我正在尝试播放歌曲,但我收到了 Uncaught TypeError: Cannot read property 'play' of undefined at EventSource.<anonymous>。我已经读到这可能是因为在歌曲文件准备好之前尝试播放音频,但是在事件侦听器中结合 window.onload 函数不会导致任何事情发生。我在调用事件之前添加了两秒的延迟,以尝试补偿足够的时间来加载歌曲文件,但我仍然遇到同样的错误。

<html>
    <title>Song Time</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript" charset="utf-8"></script>

    <body>
        <audio id="song">
            <source src="song.mp3" type="audio/mpeg">
        </audio>

         <script type="text/javascript">
           var eventSource = new EventSource("https://api.particle.io/v1/devices/2d0024001047363330363431/events/?access_token=bdde583943e53ea709aa421a2e618d024700b2f1");

           eventSource.addEventListener('playMusic', function(e) 
                //window.onload=function() 
                    console.log("here");
                    $('song')[0].play();
                //

           );
        </script>
    </body>
</html>

Uncaught TypeError: Cannot read property 'play' of undefined
    at EventSource.<anonymous

【问题讨论】:

$(‘#song’)你忘了# 你的 api 暂时不工作 【参考方案1】:

这个函数似乎是 jQuery 问题,函数 play 在纯 js 中运行良好。 这是sn-p:

document.getElementById("play").addEventListener('click', function(e) 
  console.log("play");
  document.getElementById("song").play();

);

document.getElementById("stop").addEventListener('click', function(e) 
  console.log("stop");
  document.getElementById("song").pause();
  document.getElementById("song").currentTime = 0;

);

document.getElementById("pause").addEventListener('click', function(e) 
  console.log("stop");
  document.getElementById("song").pause();

);
<html>
<title>Song Time</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript" charset="utf-8"></script>

<body>
  <audio id="song">
            <source src="http://www.cedarhome.org/mp3/songs/01%20Battlecry.mp3" type="audio/mpeg">
  </audio>
  <br />
  <input type="button" value="play" id="play" /><br />
  <input type="button" value="pause" id="pause" /><br />
  <input type="button" value="stop" id="stop" /><br />
</body>

</html>

【讨论】:

【参考方案2】:

感谢@James

$('#song') 你忘了#——詹姆斯

【讨论】:

以上是关于使用 jQuery/Javascript 播放歌曲的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用 Spotify API 播放整首歌曲?

Spotify Web Playback SDK - 播放完整歌曲

使用 Spotify API 播放全长歌曲

使用 MPMediaItemPropertyTitle 播放歌曲

是否可以使用 AVAudioPlayer 播放 iPod 歌曲?

如何使用 Spotify Web API 获取当前播放/最近播放的歌曲