禁用 play/pause 按钮,直到与音频建立连接

Disabling the play/pause button until there is a connection with the audio

在空文本输入上单击设置不应将 svg 更改为暂停

如果输入区域没有 .src 流,我该如何设置,点击它不会将播放 svg 更改为暂停。

要改变它,必须有一个 .src 流

代码: https://jsfiddle.net/vhgL96se/23/

这是音频流:http://hi5.1980s.fm/;

暂停按钮 不应该在没有src流的情况下显示它。

有什么好的方法可以做到这一点?

我想禁用 play/pause 按钮,直到与音频建立连接。

(function iife() {
    "use strict";
    const player = document.getElementById("player");
    const button = document.getElementById("button");
    const value = document.getElementById("input");
    const sent = document.getElementById("sent");
    const input = document.getElementById("clear");

    function playPauseIcon(play) {
        if (play) {
            button.classList.add("is-playing");
        } else {
            button.classList.remove("is-playing");
        }
    }
    button.addEventListener("click", function () {
        if (player.paused) {
            player.play();
            playPauseIcon(true);
        } else {
            player.pause();
            playPauseIcon(false);
        }
    });
    button.addEventListener("mousedown", function (evt) {
        if (evt.detail > 1) {
            evt.preventDefault();
        }
    }, false);
    sent.addEventListener("click", function () {
        player.src = value.value;
        player.volume = 1.0;
        playPauseIcon(true);     
    });
    input.addEventListener("click", function () {
        value.value = "";
          button.classList.remove("is-playing");
          player.pause();
    }, false);
}());

您可以获取一个变量并将其用于 onloadstart 音频事件

let canPlay = false;
player.onloadstart  = function() {
    canPlay = true;
  };

然后像这样检查

 button.addEventListener("click", function() {
    if(!canPlay){return};
    if (player.paused) {
      player.play();
      playPauseIcon(true);
    } else {
      player.pause();
      playPauseIcon(false);
    }
  });

清除后改回

input.addEventListener("click", function() {
    value.value = "";
    button.classList.remove("is-playing");
    player.pause();
    canPlay = false;
  }, false);

Demo