2011-12-20 2 views
0

하나의 비디오가있는 사이트에서 모든 HTML5 비디오를 끄는 방법을 찾고 있습니다. 모달 창을 사용하여 콘텐츠를 표시하는 앱을 개발하고 있습니다. 이 콘텐츠 중 일부는 HTML5 동영상입니다. 사용자가 동영상을 재생 한 다음 해당 동영상이 포함 된 모달 창을 닫으려고 결정하면 동영상을 중단하고 싶습니다.모든 HTML5 비디오 끄기

내가 같은 방법을 시도했습니다 다음

function stopVideo() { 
    // Make sure to turn off and reset the video 
    $('.html5-video').each(function(index, element) { 
     $(this).get(0).currentTime = 0; 
     $(this).get(0).pause(); 
    }); 
} 

이 Safari에서 잘 작동; 그러나 FireFox와 Chrome에서는 요소가 숨겨져있어 더 이상 사용할 수 없다는 오류가 발생합니다. 누구나 안정적으로 모든 비디오를 중단하는 방법에 대한 아이디어가 있습니까?

감사합니다.

답변

0

우선, jQuery에 대해 배워야 할 것이 있습니다. $() (일부 인수와 함께)를 호출 할 때마다 성능에 나쁜 새로운 jQuery 객체가 생성됩니다. 당신에게 같은 인수 $()를 호출 할 경우이 될 것입니다 귀하의 경우, 그래서 당신은 결과를 캐시한다 :

var video_object = $(this).get(0); 
video_object.currentTime = 0; 
video_object.pause(); 

을 둘째, 때 jQuery를, 문맥에서 가진 각 루프 함수 (this)와 두 번째 인수는 html-objects입니다. 따라서 $() - 메소드로 래핑 한 다음 .get (0)을 수행하는 것은 의미가 없습니다.

그래서이는 방법과 동일 : 지금 백업 문제에

function stopVideo() { 
    // Make sure to turn off and reset the video 
    $('.html5-video').each(function(index, element) { 
     element.currentTime = 0; 
     element.pause(); 
    }); 
} 

. 위의 코드가 오류없이 작동하고있는 것 같습니다 (예 : http://jsfiddle.net/klaascuvelier/fypAR/)

+0

팁 주셔서 감사합니다! 여기서 확실히 최적화 할 필요가 있습니다. 예제를 던지기 전에 Firefox와 Chrome에서 작동하는지 확인할 수 있습니까? Safari에서 잘 작동합니다. 또한 문제는 HTML5 동영상 요소가 숨겨진 요소로 감싸 져서 오류가 발생하는 이유 인 것으로 보입니다. – tollmanz

+0

FF 나 Chrome에서 확인하지 않은 것처럼 이전 의견이 들렸다는 것을 깨달았습니다. 나는 그것이 있고 오류가 발생하는 곳입니다. Safari에서는 발생하지 않습니다. – tollmanz

+0

이전 게시물의 jsfiddle 링크를 확인하십시오. Chrome 및 Firefox에서 시도한 내용이 모두 저에게 적합합니다. –