HTML5 비디오가 끝났을 때 감지


답변:


311

첫 번째 매개 변수로 'ended'가있는 이벤트 리스너를 추가 할 수 있습니다

이처럼 :

<video src="video.ogv" id="myVideo">
  video not supported
</video>

<script type='text/javascript'>
    document.getElementById('myVideo').addEventListener('ended',myHandler,false);
    function myHandler(e) {
        // What you want to do after the event
    }
</script>

8
인터넷 전체에서 작동하는 유일한 비디오 "종료"이벤트입니다. 브라보!
Isaac

10
e가 존재하는지 왜 확인합니까?
Allan Stepps

3
@AllanStepps 내가 수집 할 수있는 것으로부터, if(!e) { e = window.event; }이 답변에 원래 포함되었다는 진술은 IE의 attachEvent초기 버전에 첨부 된 이벤트 핸들러 내에서 최신 이벤트를 가져 오기위한 IE 특정 코드입니다 . 이 경우 처리기가 첨부되어 있기 때문에 addEventListener(그리고 IE의 초기 버전은 HTML5 비디오를 다루는 사람들과 관련이 없으므로) 완전히 불필요하며 제거했습니다.
Mark Amery

3
이 방법을 사용할 때 주목할 점은 OS X (10.11)의 El Capitan 버전의 Safari는 '종료'이벤트를 포착하지 않습니다. 이 경우 'timeupdate'이벤트를 사용한 다음 this.current Time이 다시 0과 같은지 확인해야합니다.
Cam

2
또한 loop를 false로 설정해야합니다. 그렇지 않으면 종료 된 이벤트가 트리거되지 않습니다.
이스라엘 Morales

134

HTML5 비디오 및 오디오에 대해 알아야 할 모든 것을 살펴보십시오.Opera Dev 사이트의 "내 컨트롤을 롤링하고 싶다"섹션에서 .

이것은 관련 섹션입니다 :

<video src="video.ogv">
     video not supported
</video>

다음을 사용할 수 있습니다.

<script>
    var video = document.getElementsByTagName('video')[0];

    video.onended = function(e) {
      /*Do things here!*/
    };
</script>

onended모든 미디어 요소의 HTML5 표준 이벤트입니다. HTML5 미디어 요소 (비디오 / 오디오) 이벤트 설명서를 참조하십시오.


2
제시 한 것처럼 "종료 된"이벤트를 정확히 같은 방식으로 잡으려고했지만이 이벤트는 실행되지 않습니다. 나는 Safari 5.0.4 (6533.20.27)에 있습니다
AntonAL

@AntonAL : 문제가있는 경우 새 질문으로 게시하겠습니다.
Alastair Pitts

@All : 당신도 이것처럼 할 수 있습니다. <video class = "video_player"id = "video"poster = "images / video-pc.jpg"tabindex = "0"height = "100 %"onended = "myHandler ()">
VendettaDroid

5
@AlastairPitts Chrome에서는 유효하지 않습니다. Darkroro의 대답은 Chrome을 사용하는 유일한 방법입니다. 이것은 여전히 ​​Firefox에서 작동했습니다.
Jeff

죽은 링크. w3schools.com/tags/ref_eventattributes.asp => 미디어 이벤트
Aurelien

36

쿼리

$("#video1").bind("ended", function() {
   //TO DO: Your code goes here...
});

HTML

<video id="video1" width="420">
  <source src="path/filename.mp4" type="video/mp4">
  Your browser does not support HTML5 video.
</video>

이벤트 유형 HTML 오디오 및 비디오 DOM 참조


11
-1. 2011 년에 릴리스 된 jQuery 1.7 이후 .on()로 선호되었습니다 .bind(). 또한 코드를 올바르게 형식화하십시오.
Mark Amery

4

다음은 전체 예입니다. =) 도움이되기를 바랍니다.

<!DOCTYPE html> 
<html> 
<body> 

<video id="myVideo" controls="controls">
  <source src="your_video_file.mp4" type="video/mp4">
  <source src="your_video_file.mp4" type="video/ogg">
  Your browser does not support HTML5 video.
</video>

<script type='text/javascript'>
    document.getElementById('myVideo').addEventListener('ended',myHandler,false);
    function myHandler(e) {
        if(!e) { e = window.event; }
        alert("Video Finished");
    }
</script>
</body> 
</html>

4

다음은 비디오가 끝날 때 트리거되는 간단한 방법입니다.

<html>
<body>

    <video id="myVideo" controls="controls">
        <source src="video.mp4" type="video/mp4">
        etc ...
    </video>

</body>
<script type='text/javascript'>

    document.getElementById('myVideo').addEventListener('ended', function(e) {

        alert('The End');

    })

</script>
</html> 

'EventListener'행에서 'ended'라는 단어를 'pause'또는 'play'로 바꾸어 해당 이벤트도 캡처하십시오.


이 JS 코드에 구문 오류가 있습니다. 인수 목록 뒤에)가 없음
frzsombor

1

onended="myFunction()"비디오 태그에 간단히 추가 할 수 있습니다 .

<video onended="myFunction()">
  ...
  Your browser does not support the video tag.
</video>

<script type='text/javascript'>
  function myFunction(){
    console.log("The End.")
  }
</script>

0

비디오가 끝날 때 함수가 호출 ended, loadedmetadata, timeupdate되는 위치를 포함하여 모든 비디오 이벤트를 리스너에 추가 할 수 있습니다.ended

$("#myVideo").on("ended", function() {
   //TO DO: Your code goes here...
      alert("Video Finished");
});

$("#myVideo").on("loadedmetadata", function() {
      alert("Video loaded");
  this.currentTime = 50;//50 seconds
   //TO DO: Your code goes here...
});


$("#myVideo").on("timeupdate", function() {
  var cTime=this.currentTime;
  if(cTime>0 && cTime % 2 == 0)//Alerts every 2 minutes once
      alert("Video played "+cTime+" minutes");
   //TO DO: Your code goes here...
  var perc=cTime * 100 / this.duration;
  if(perc % 10 == 0)//Alerts when every 10% watched
      alert("Video played "+ perc +"%");
});
<!DOCTYPE html>
<html>

<head>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</head>

<body>

  <video id="myVideo" controls="controls">
    <source src="your_video_file.mp4" type="video/mp4">
      <source src="your_video_file.mp4" type="video/ogg">
        Your browser does not support HTML5 video.
  </video>

</body>

</html>

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.