如何一键切换音频播放/暂停

Posted

技术标签:

【中文标题】如何一键切换音频播放/暂停【英文标题】:How to toggle audio play/pause with one button 【发布时间】:2018-05-03 11:02:10 【问题描述】:

我以前从未真正使用过 javascript,但我尝试在谷歌上搜索如何为音频制作播放/暂停按钮的解决方案 - 我发现在这个网站上似乎是一个很好且简单的解决方案: How to toggle audio play() pause() with one button or link? (PS。我没有足够的声誉来评论 Iceman 的解决方案并直接问他可能出了什么问题 - 如果可以的话,我会的。)

但是,当我将代码 sn-ps 粘贴到我的文档中时,什么也没有发生(生成的文本不可点击)。 你们中的一些人可以看看并告诉我我做错了什么吗?这很可能是愚蠢的,但我自己看不到。

Index.html 到目前为止:

<!DOCTYPE html>
<html>
<head>
	<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    <title>Ukendt Navn ...</title>
    <script>
        var myAudio = document.getElementById("myAudio");
        var isPlaying = false;

        function togglePlay() 
        if (isPlaying) 
            myAudio.pause()
         else 
            myAudio.play();
        
        ;
        myAudio.onplaying = function() 
        isPlaying = true;
        ;
        myAudio.onpause = function() 
        isPlaying = false;
        ;
    </script>
    <style type="text/css">
        #content 
            border: 1px solid blue;
            margin: auto;
            max-width: 20vw;
            margin-top: 30vw;
            color: black;
        
	</style>
</head>
<body>
    <div id="content">
        <audio id="myAudio" src="birds.mp3" preload="auto"></audio>
        <a onClick="togglePlay()">Click here to hear.</a>
    </div>
</body>
</html>

我的测试站点:http://wyrdling.com/other/ukendtnavn/

【问题讨论】:

How to toggle audio play() pause() with one button or link?的可能重复 @Nikola Lukic 不,不完全(正如上面帖子中已经解释的那样,我无法评论建议帖子中的解决方案 - 并且写一个“答案”来提出问题只是没有看起来也不错)。 好的,很抱歉 - 标记已删除。 【参考方案1】:

您试图在元素加载之前调用document.getElementById("myAudio"),因此您可以在页面完全加载后调用它,或者将脚本放在body标签的末尾之前。

<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    <title>Ukendt Navn ...</title>
    <script>
        window.addEventListener('load', function()
            var myAudio = document.getElementById("myAudio");
            
            myAudio.onplaying = function() 
              isPlaying = true;
            ;
            myAudio.onpause = function() 
              isPlaying = false;
            ;
        );
        
        var isPlaying = false;
        
        function togglePlay() 
            if (isPlaying) 
                myAudio.pause()
             else 
                myAudio.play();
            
        
    </script>
    <style type="text/css">
        #content 
            border: 1px solid blue;
            margin: auto;
            max-width: 20vw;
            margin-top: 30vw;
            color: black;
        
	</style>
</head>
<body>
    <div id="content">
        <audio id="myAudio" src="http://wyrdling.com/other/ukendtnavn/birds.mp3" preload="auto"></audio>
        <a onClick="togglePlay()">Click here to hear.</a>
    </div>
</body>
</html>

【讨论】:

以上是关于如何一键切换音频播放/暂停的主要内容,如果未能解决你的问题,请参考以下文章

在 HTML 音频播放器中切换播放/暂停按钮

切换播放/暂停按钮(多个音频)

播放和暂停按钮正在工作...但是如何重置按钮以在音频结束后显示播放符号?

Javascript 音频控制自动播放播放暂停

点击时切换音频?

jQuery - 切换播放/暂停按钮(多个音频)