【问题标题】:How can I play/pause more than one video by mouseover如何通过鼠标悬停播放/暂停多个视频
【发布时间】:2013-10-03 13:00:18
【问题描述】:

我有一个包含许多视频的页面并希望播放 mouseOver 上的每个视频并在 mouseOut 上暂停。

它正在使用 video1,但我想使用 video2 等等。

<!DOCTYPE html> 
<html> 
<body> 

<div style="text-align:center"> 
  <video id="video1" width="420" onmouseover="playPause()" onmouseout="playPause()">
    <source src="mov_bbb.mp4" type="video/mp4">
    <source src="mov_bbb.ogg" type="video/ogg">
    Your browser does not support HTML5 video.
  </video>
  <video id="video2" width="420" onmouseover="playPause()" onmouseout="playPause()">
    <source src="mov_bbb.mp4" type="video/mp4">
    <source src="mov_bbb.ogg" type="video/ogg">
    Your browser does not support HTML5 video.
  </video>
</div> 

<script> 
var myVideo=document.getElementById("video1"); 

function playPause()
{ 
if (myVideo.paused) 
  myVideo.play(); 
else 
  myVideo.pause(); 
} 
</script> 

</body> 
</html>

【问题讨论】:

    标签: javascript html


    【解决方案1】:

    根据 Etienne Miret 的回答,最小实现根本不需要特定功能。

    只需设置 onmouseover="this.play()"onmouseout="this.pause()" 即可:

    <div style="text-align:center"> 
      <video id="video1" width="420" onmouseover="this.play()" onmouseout="this.pause()">
        <source src="mov_bbb.mp4" type="video/mp4">
        <source src="mov_bbb.ogg" type="video/ogg">
        Your browser does not support HTML5 video.
      </video>
      <video id="video2" width="420" onmouseover="this.play()" onmouseout="this.pause()">
        <source src="mov_bbb.mp4" type="video/mp4">
        <source src="mov_bbb.ogg" type="video/ogg">
        Your browser does not support HTML5 video.
      </video>
    </div> 
    

    【讨论】:

      【解决方案2】:

      使用this 关键字:

      onmouseover="playPause(this)"
      

      在你的 Javascript 中:

      function playPause(video) {
          if (video.paused) {
              video.play();
          } else {
              video.pause();
          }
      }
      

      【讨论】:

      • 基于此;使用onmouseover="this.play()"onmouseout="this.pause()" 应该有同样的效果?
      • @mariusnn 确实如此。我错过了 OP 也在 mouseout 上调用 playPause 函数。
      【解决方案3】:

      您需要传递对要播放/暂停的视频的引用。 f.ex:

      <div style="text-align:center"> 
        <video id="video1" width="420" onmouseover="playPause('video1')" onmouseout="playPause('video1')">
          <source src="mov_bbb.mp4" type="video/mp4">
          <source src="mov_bbb.ogg" type="video/ogg">
          Your browser does not support HTML5 video.
        </video>
        <video id="video2" width="420" onmouseover="playPause('video2')" onmouseout="playPause('video2')">
          <source src="mov_bbb.mp4" type="video/mp4">
          <source src="mov_bbb.ogg" type="video/ogg">
          Your browser does not support HTML5 video.
        </video>
      </div> 
      
      <script> 
      
      function playPause(videoID)
      { 
      var myVideo=document.getElementById(videoID); 
      
      if (myVideo.paused) 
        myVideo.play(); 
      else 
        myVideo.pause(); 
      } 
      </script> 
      

      【讨论】:

      • 谢谢,效果很好,但是用“this”关键字的解决方案对我来说更好。
      • @Eyesis 这确实是一个更动态的解决方案。
      【解决方案4】:

      使用此代码,尽情享受吧! ////HTML

          <div class="hov">
              <div id="video1" class="sel">
                  <video width=640  src="assets/videos/ve.mp4"></video>
                  <div class="controls" style="display:none">
                    <button>Play</button>
                  </div>
              </div>
          </div>
      

      //style.css

      .sel {
        position:relative;
        display:inline-block;
        font-size:16px;
        z-index:0;
        }
      
        .sel > .controls:hover {
        position:absolute;
        width:100%;
        background:rgba(255,255,255,0.3);
        padding:7px;
        box-sizing:content-box;
        z-index:10000;
        }
      
        .sel > .controls{
        position:absolute;
        bottom:0;
        width:100%;
        background:rgba(255,255,255,0.3);
        padding:7px;
        box-sizing:content-box;
        z-index:10000;
        top: 150px;
        }
      

      //脚本

      // self hosted video controler//
      var $sel = $("#video1");
      var $video = $sel.children("video"), video = $video[0]
      var $controls = $sel.children(".controls");
      var $play = $controls.children("button");
      
      // control visibility
      $sel.on("mouseover mouseout", function(e) {
          $controls.css("display", e.type === "mouseout" && video.paused ? "none" : "block");
          $controls.css("display", e.type === "mouseover" && video.play ? "block" : "none");
      });
      
      // play or pause
      $play.on("click", toggle);
      $video.on("click", toggle);
      
      function toggle() {
          video[video.paused ? "play" : "pause"]();
      }
      
      // todo: cover more events (seeked, error etc.)
      $video.on("play pause ended", updateUI);
      
      // update control UI elements (todo: update time/progress etc.)
      function updateUI() {
          $play.text(video.paused ? "Play" : "Pause")
      }
      

      【讨论】:

        猜你喜欢
        • 2018-07-31
        • 1970-01-01
        • 1970-01-01
        • 2015-07-27
        • 2016-06-03
        • 2023-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多