【问题标题】:Disabling the play/pause button until there is a connection with the audio禁用播放/暂停按钮,直到与音频建立连接
【发布时间】:2019-01-08 04:33:51
【问题描述】:

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

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

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

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

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

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

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

我想禁用播放/暂停按钮,直到与音频建立连接。

(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);
}());

【问题讨论】:

  • 你的意思是添加条件player.src!=='' ?
  • 是的,我如何将其写入代码?
  • 你能帮忙吗?我一直无法弄清楚如何做到这一点。

标签: javascript button input form-submit


【解决方案1】:

您可以取一个变量并在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

【讨论】:

  • 如果你在没有流的情况下点击设置,播放按钮仍然会变为暂停。我想防止这种情况发生。仅当其中存在有效流时才应更改。 jsfiddle.net/vhgL96se/26
  • 当点击“设置”且内部没有流时,播放按钮应保持为“播放”,而不是变为“暂停”。如何将该功能添加到代码中?jsfiddle.net/vhgL96se/26
  • @MaryJaneSmith 让我检查一下
  • 现在,当我将流放入其中时,播放按钮不会在第一次单击时更改为暂停。 jsfiddle.net/vhgL96se/33
  • 当我输入流时,点击“设置”,播放 svg 不会更改为暂停按钮。 jsfiddle.net/vhgL96se/33
猜你喜欢
  • 2014-08-21
  • 1970-01-01
  • 1970-01-01
  • 2020-04-12
  • 2015-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多