单击 "X" 按钮时如何关闭弹出窗口并停止播放视频

How to close popup and stop video when clicking "X" button

干杯伙计们, 我会从一开始就提到我是这个世界的新手,我希望您能就以下问题提供一些帮助:

我有一个按钮。单击时,按钮会打开一个弹出窗口并自动播放位于弹出窗口内的视频。 我想要做的是:

当用户单击按钮时,将触发弹出窗口并自动播放视频。当用户单击关闭“X”按钮时,弹出窗口应关闭,视频应 stop/pause.

我有以下代码:

HTML

          <div class="video-button-container">
            <img src="media/video-bg.png">
            <a href="#" onclick="toggle();">
              <img src="media/play.png" class="play">
            </a>
          </div>

          <div class="video-container">
            <img src="media/close.png" class="close" onclick="close();">
            <video src="media/video.mp4" controls="true" class="video"></video>
          </div>

CSS

.video-button-container {
  position: absolute;
  top: 70px;
  right: 70px;
}

.play {
  position: absolute;
  top: 25%;
  right: 35%;
}

.video-container {
  position: absolute;
  right: 0;
  top: 0;
  z-index: 10000;
  background: rgba(0, 0, 0, 0.25);
  width: 100%;
  height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  visibility: hidden;
  opacity: 0;
}

.video-container.active {
  visibility: visible;
  opacity: 1;
}

.video-container video {
  position: relative;
  max-width: 900px;
  outline: none;
}

.close {
  position: absolute;
  top: 80px;
  right: 20px;
  cursor: pointer;
  max-width: 32px;
}

@media (max-width: 991px) {
  .video-container video {
    max-width: 90%;
  }
}

JS

      var videoElem = document.querySelector(".video-container video");
      var trailerElem = document.querySelector(".video-container")

      function toggle() {
        trailerElem.classList.add("active");
        videoElem.play();
        videoElem.currentTime = 0;
      }

      function close() {
        trailerElem.classList.remove("active");
        videoElem.pause();
        videoElem.currentTime = 0;
      }

有人可以告诉我,我做错了什么吗? 祝你有美好的一天!

我知道如果您在外部 window 中制作视频,您可以关闭 window 本身,这可以方便地调整 window 的大小等等。这意味着您可以检测到按钮何时被按下,您可以触发它关闭 window 并执行 x。 (我意识到你已经做到了)

我知道您可以使用 window.close() 关闭弹出窗口,所以这里有一个部分示例:

var popup;
function onReadyFunc() {
popup = window.open("https://google.com", "_blank", "top=500,left=500,width=400,height=400");
}

function closePopup() {
popup.close()
}

并且您会在主页加载时调用 onReadyFunc() 否则您可能必须在视频顶部制作一个按钮,以便在您单击它时不太确定是否可以检测到外部按钮,但如果您有访问更改 class/id 然后你肯定可以在单击时添加一个事件来执行你的功能以关闭 window 等等。

close.png 元素没有绑定任何事件,因为它不在加载页面时 visible,因此您必须在加载后绑定事件。

      /* function close() {
        trailerElem.classList.remove("active");
        videoElem.pause();
        videoElem.currentTime = 0;
      }
      */
      window.onload = function () {
        document.getElementsByClassName("close")[0]
          .addEventListener("click", function (e) {
            trailerElem.classList.remove("active");
            videoElem.pause();
            videoElem.currentTime = 0;
          });
      };