Задать вопрос
@prolina

Проигрывать ютуб видео только тогда, когда до него доскроллили?

Нужно реализовать воспроизведение видео только тогда, когда доскроллили до него (Ангуляр 2+). В проекте используется youtube api
<section class="al-video-section">
	<div class="al-video-wrapper">
		<div class="al-video-wrapper-overlay">
			<div  id="player" style="margin-top: -400px; border: none"></div>
		</div>
	</div>
</section>


import {AfterViewInit, Component, OnInit} from '@angular/core';

declare global {
	interface Window {
		YT: {
			Player(id: string, options: object): void,
		};

		onYouTubeIframeAPIReady?(): void;
	}
}

@Component({
	selector: 'al-video-section',
	templateUrl: './video-section.component.html',
	styleUrls: ['./video-section.component.less'],
})
export class VideoSectionComponent implements OnInit, AfterViewInit {
	public player: HTMLIFrameElement;
	constructor() {
	}

	// tslint:disable-next-line:no-any
	public onPlayerReady(event: any): void {
		event.target.playVideo();
	}

	// tslint:disable-next-line:no-any
	public onPlayerStateChange(event: any): void {
		if (event.target.getPlayerState() === 0) {
			event.target.seekTo(3, false);
		}
	}
	public ngAfterViewInit(): void {
		const playerApiScript: HTMLScriptElement = document.createElement('script');
		playerApiScript.type = 'text/javascript';
		playerApiScript.src = 'https://www.youtube.com/iframe_api';
		document.body.appendChild(playerApiScript);
	}

	public ngOnInit(): void {
		window.onYouTubeIframeAPIReady = () => {
			this.player = new window.YT.Player('player', {
				videoId: 'videoID',
				height: '1300px',
				width: '100%',
				events: {
					onReady: event => {
						if (window.pageYOffset >=
							event.target.a.parentNode.offsetParent.offsetTop - 200) {
							this.onPlayerReady(event);
						}
					},
					onStateChange: event => {
						this.onPlayerStateChange(event);
					},
				},
				playerVars: {
					controls: 0,
					modestbranding: 1,
					rel: 0,
					showInfo: 0,
					mute: 1,
					loop: 1,
					playlist: 'videoID',
					enablejsapi: 1,
				},
			});
		};
	}
}

Сейчас видео воспроизводится только, если при обновлении странички сразу же опуститься вниз, где видео расположено.
  • Вопрос задан
  • 90 просмотров
Подписаться 2 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Академия Eduson
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
  • Академия Eduson
    Frontend-разработчик
    9 месяцев
    Далее
  • Учебный центр IBS
    WEB-022 Разработка на Angular. Продвинутый уровень
    1 неделя
    Далее
Пригласить эксперта
Ответы на вопрос 1
dollar
@dollar
Делай добро и бросай его в воду.
Автовоспроизведение видео - зло.
Дайте пользователю самому решать, в какой момент начать просмотр.
Кнопки "Play" будет достаточно.

spoiler
Это не является ответом на вопрос формально. Но зато является реальным ответом на вопрос по существу. Ведь вряд ли автор хочет отпугивать пользователей агрессивной подачей контента, понижать конверсии и т.д. А если действительно хочет, то, пожалуй, лучше отдельно это объяснить в вопросе.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы