728x90
스크롤하다가 유튜브가 뷰포트에 들어오면 재생하는 함수 만들기
아래 유튜브 API에서 제공하는 메소드를 이용해서 재생을 제어한다.
youtubePlayer01.playVideo() //재생
youtubePlayer01.pauseVideo() //정지
youtubePlayer01.seekTo(8); // 8초부터 재생
<iframe id="youtubePlayer01" class="youtube" src="경로" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"></iframe>
초기 세팅
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var youtubePlayer01;
function onYouTubeIframeAPIReady() { // 유튜브 로딩되면 바로 실행되는 API 관련 함수
youtubePlayer01 = new YT.Player('youtubePlayer01', { // iframe ID 값
playerVars:{
rel:0
},
events: {
'onReady': pauseVideo, // 로딩 없애기 위해 초기 로드 후 멈추기
}
});
}
- onYouTubeIframeAPIReady함수는 다른 곳에서 불러와 사용할 수는 없다.
- 여러개의 player를 사용한다면 그만큼 선언을 해줘야한다.
- new YT.Player다음에 나온 youtubePlayer01은 iframe 태그의 ID값이다.
- 뷰포트에 접근했을때 로딩되면서 재생되기 때문에 초기에 재생 후 정지를 시켜준다. (autoplay=1&mute=1를 iframe 파라미터에 추가한 상태)
스크롤하면서 뷰포트 접근시 재생
function pauseVideo() { // 로딩 없애기 위해 초기 로드 후 멈추기
/* 자동재생 시점 설정 :: S */
// youtubePlayer01.seekTo(8); // 8초부터 재생
/* 자동재생 시점 설정 :: E */
youtubePlayer01.pauseVideo();//일시정지
// youtubePlayer02.pauseVideo();//일시정지
// youtubePlayer03.pauseVideo();//일시정지
let windowScroll = $(window).scrollTop();
let windowHeight = $(window).outerHeight();
// 한 개일 때
if($("#youtubePlayer01").offset().top < windowScroll + windowHeight){
playVideo();
}
// 한 개 이상
// for(i=1; i < $('.youtube').length + 1; i++){
// if($("#youtubePlayer0" + i).offset().top < windowScroll + windowHeight){
// playVideo("0" + i);
// }
// }
}
//한 개일 때
function playVideo() {
if(youtubePlayer01){
youtubePlayer01.playVideo();//재생
}
}
// 한 개 이상
// function playVideo(num) {
// if(window["youtubePlayer" + num]){
// window["youtubePlayer" + num].playVideo();//재생
// }
// }
// document 로드 후 이벤트
$(document).on('ready',function(){
$(window).on("scroll", function(){
let windowScroll = $(window).scrollTop();
let windowHeight = $(window).outerHeight();
// 한 개일 때
if($("#youtubePlayer01").offset().top < windowScroll + windowHeight){
playVideo();
}
// 한 개 이상
// for(i=1; i < $('.youtube').length + 1; i++){
// if($("#youtubePlayer0" + i).offset().top < windowScroll + windowHeight){
// playVideo("0" + i);
// }
// }
})
});
- 여러개의 youtubePlayer를 사용한다면 id="youtubePlayer01", id="youtubePlayer02" · · · 처럼 선언해준 후 반복문을 사용한다.
- youtubePlayer01.seekTo(8); 주석을 풀면 재생 시간을 제어할 수 있다.
youtubePlayer01.seekTo(8); // 8초부터 재생
youtubePlayer01.seekTo(68); // 1분 8초부터 재생
'Study > jQuery' 카테고리의 다른 글
Youtube Player API로 유튜브 음소거(mute) 제어하기 (javascript 사용가능) (0) | 2025.02.28 |
---|---|
[jQuery] 마우스 호버시 이미지 확대(줌) 영역 보여주기 (0) | 2024.11.20 |