2013-08-08 12 views
8

Wiem, że mogę sprawdzić przez navigator.userAgent, czy urządzenie jest iPhonem, ale są też inne urządzenia i niektóre z nich nie są świadome, które będą odtwarzać wideo we własnym gracz.Wykryj, czy przeglądarka/urządzenie może odtwarzać wideo HTML5 przed odtwarzaniem

Można utworzyć listę wszystkich przeglądarek/urządzeń, które nie odtwarzają wideo w linii, ale zastanawiam się, czy istnieje inne rozwiązanie.

Czy w języku JavaScript można wykryć, czy przeglądarka, na przykład Safari na iPhonie, odtwarza wideo w swoim odtwarzaczu zamiast w linii? W związku z tym możliwe jest pokazanie alternatywy, takiej jak obraz, zamiast wideo.

+0

Czy kiedykolwiek znaleźć rozwiązanie tego problemu? – JSuar

+0

@JSuar Nie znalazłem rozwiązania i uważam, że w tej chwili nie jest możliwe sprawdzenie JavaScript, jeśli wideo zostanie odtworzone automatycznie w odtwarzaczu natywnym. Wydaje mi się, że konstruktorzy przeglądarek muszą dodać do przeglądarki dodatkowe informacje, aby można było odczytać "navigator.video.playsInBrowser". – Dairo

+0

Jeśli nadal potrzebujesz pomocy, mam kod do wykrywania przeglądarki iPhone'a jako instrukcję if, else, jeśli jej potrzebujesz. Oczywiście iPhone odtwarza go we własnym odtwarzaczu wideo, a nie w przeglądarce. –

Odpowiedz

4

Wiem, że to stare pytanie, ale jest to dla mnie duży problem i nie ma zbyt wielu informacji online. Ale mogę odpowiedzieć na twoje pytanie po tym, jak znalazłem odpowiedź Alexeya w tym wątku: Detect if client allows inline media playback for HTML5 video.

Nie, nie można wykryć, czy przeglądarka/urządzenie obsługuje wideo wbudowane przed odtworzeniem.

To zła wiadomość. Problem polega na tym, że jedynym niezawodnym sprawdzaniem w przeglądarkach takich jak iOS Safari na iPhonie jest rozpoczęcie odtwarzania wideo, a następnie podsłuchiwanie, jeśli natychmiast przechodzi w tryb rodzimego trybu pełnoekranowego. Nawet to może się nie powieść, jeśli utworzysz gracza, który automatycznie wszedł do trybu pełnoekranowego po uruchomieniu zdarzenia odtwarzania.

Dobra wiadomość, przynajmniej dla mnie, polega na tym, że wykrywając ją zaraz po uruchomieniu wraz z użyciem zapytań o media CSS w celu wykrycia rozmiaru ekranu, powinienem być w stanie osiągnąć to, co próbuję zrobić.

Oto odpowiednie fragmenty zaczerpnięte z mojego odtwarzacza JS, w dużym stopniu wywodzące się z powyższego linku.

ta obsługuje tylko Wykrywa Inline Po Teledysk rozpoczyna odtwarzanie

// Expose useful properties of the video 
var vid = (function(){ 
    var elem = document.getElementsByTagName('video')[0]; 
    return {elem:elem}; 
})(); 
// Test for inline playback support 
var inlineTest = (function() { 
    if (vid.elem.webkitFullscreenchange || vid.elem.mozFullscreenchange || vid.elem.MSFullscreenChange || vid.elem.fullscreenchange) { 
     return 'inline-no'; 
    } else { 
     return 'inline-yes' 
    } 
}); 
// play() functions 
vid.elem.onplay = function(){ 
     var inlineSupport = inlineTest(); 
     document.body.className += ' ' + inlineSupport; 
}; 
+0

Jeśli to pytanie jest dokładnym duplikatem połączonego pytania, zgłoś je jako duplikat, zamiast pozostawić odpowiedź na to pytanie. Jeśli nie jest duplikatem, pozostaw pełną odpowiedź na to pytanie zamiast odpowiedzi związanej z linkiem. – josliber

+0

Nie jest to duplikat, ponieważ rozwiązanie w połączonym pytaniu działa tylko po odtworzeniu wideo. Szczerze mówiąc, to, co zostawiłem, jest w rzeczywistości komentarzem.Poza tym, że nie zdobyłem jeszcze 50 punktów reputacji, nie mogę komentować. Tak więc jedynym sposobem na dostarczenie informacji do oryginalnego plakatu i innym, którzy znaleźli to w taki sposób, jak ja, było umieszczenie go w formie odpowiedzi. – avaunt

+0

Po prostu znacznie go rozszerzyłem. Jeśli nie akceptujesz go teraz jako odpowiedzi, po prostu powiedz to zamiast rezygnować, a ja po prostu to usuniemy. – avaunt

Powiązane problemy