2013-02-27 10 views
14

mam wbudowany video youtube z ukrytymi kontroli:Marka YouTube wideo w trybie pełnoekranowym przy użyciu iframe i JavaScript API

<iframe id="ytplayer" type="text/html" width="400" height="225" 
src="http://www.youtube.com/embed/dMH0bHeiRNg?rel=0&controls=0&showinfo=0 
&loop=1&hd=1&modestbranding=1&enablejsapi=1&playerapiid=ytplayer" 
frameborder="0" allowfullscreen></iframe> 

mogę sterować z API YouTube Javascript.

var tag = document.createElement('script'); 

tag.src = "//www.youtube.com/iframe_api"; 
var firstScriptTag = document.getElementsByTagName('script')[0]; 
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 

var player; 
function onYouTubeIframeAPIReady() { 
player = new YT.Player('ytplayer', { 
    events: { 
    'onReady': onPlayerReady, 
    'onStateChange': onPlayerStateChange 
    } 
}); 
} 

Rzeczy takie jak player.playVideo() i tak działają doskonale. Teraz szukam sposobu, aby wideo było odtwarzane w trybie pełnoekranowym za pomocą wywołania Javascript, ale nie mogłem znaleźć żadnej metody w interfejsie API.

Czy to możliwe (bez elementów sterujących), a jeśli tak, to w jaki sposób?

+0

AFAIK „prawdziwej” pełnego ekranu wykonana jest z Flash (lub _sort rzeczy _) ... –

+2

@Adriano Flash nie jest potrzebny, interfejs API pełnoekranowego już istnieje i jest zaimplementowany we wszystkich nowoczesnych przeglądarkach z wyjątkiem IE (10): http://caniuse.com/#feat=fullscreen –

+0

@RobW ładny, ja nie znać to. Tak smutne, że nie można go używać, jeśli nie jest obsługiwane przez IE (nawet 10) ... :( –

Odpowiedz

-5

Można spróbować ustawić wymiar iframe do wymiaru okna przez JavaScript.

Coś jak to (przy użyciu jQuery):

$('ytplayer').attr('width', $(window).width()); 
$('ytplayer').attr('height', $(window).height()); 

Mam nadzieję, że to może pomóc.

+4

Myślę, że plakat oznacza naprawdę pełny ekran, tj. Większy niż okno. – mikemaccana

4

Dodałem kod do pełnoekranowego (prawdziwy pełny ekran, nie pełne okno) do mojej odpowiedzi na Auto-Full Screen for a Youtube embed.

YouTube nie wyświetla pełnoekranowego interfejsu API, ale można wywołać funkcję natywnej przeglądarki requestFullScreen() z zdarzenia playerStateChange() z interfejsu API YouTube lub utworzyć własny niestandardowy przycisk odtwarzania, tak jak ja.

3

Można używać HTML5 pełnoekranowy API:

node.requestFullScreen(); 
document.cancelFullScreen(); 
document.fullScreen; // bool 

Należy jednak pamiętać, że:

  • to zwykle wymaga specyficznych prefiks sprzedawca jak mozRequestFullScreen() lub webkitRequestFullScreen
  • requestFullScreen musi być wywołana na zdarzenia użytkownika (jak onclick)
  • w firefox - pełny ekran będzie czarny dopóki "Allow" nie zostanie kliknięty przez użytkownika
1

Patrząc na odniesienie API dla odtwarzacza iframe, nie sądzę, że to możliwe, aby ustawić go w trybie pełnoekranowym (z samym iframe API) - ctrl f nie wybrać na pełnym ekranie, więc albo to tajemnica sposób ukryty w interfejsie API lub nie istnieje. Jednak, jak zapewne wiesz, możesz ustawić rozmiar odtwarzacza player.setSize(width:Number, height:Number):Object, a następnie ustawić window fullscreen.

3

To zadziałało idealnie w moim przypadku. można znaleźć więcej szczegółów na ten link: demo on CodePen

var player, iframe; 
var $ = document.querySelector.bind(document); 

// init player 
function onYouTubeIframeAPIReady() { 
    player = new YT.Player('player', { 
    height: '200', 
    width: '300', 
    videoId: 'dQw4w9WgXcQ', 
    events: { 
     'onReady': onPlayerReady 
    } 
    }); 
} 

// when ready, wait for clicks 
function onPlayerReady(event) { 
    var player = event.target; 
    iframe = $('#player'); 
    setupListener(); 
} 

function setupListener(){ 
$('button').addEventListener('click', playFullscreen); 
} 

function playFullscreen(){ 
    player.playVideo();//won't work on mobile 

    var requestFullScreen = iframe.requestFullScreen || iframe.mozRequestFullScreen || iframe.webkitRequestFullScreen; 
    if (requestFullScreen) { 
    requestFullScreen.bind(iframe)(); 
    } 
} 
Powiązane problemy