2016-04-12 9 views
0

Ich möchte einen Sound in meiner Anwendung spielen, wenn ein Tab im Browser unabhängig Fokus verfügbar ist. Ich benutze HTML 5 Audio-Tags, um den Sound abzuspielen. Aber Chrome und Safari verzögern das Abspielen von Audiodateien, bis der Benutzer den Tab navigiert oder fokussiert. Die gesamte Audioanforderung zum Abspielen von Ton wird zu einer Zeit des Tab-Fokus abgespielt. Es wird zu laut, wenn Sie viel Sound gleichzeitig hören. Ist es möglich, einen Ton von einem unfokussierten Tab abzuspielen, ohne dass der Browser die Natur verschiebt? Schlage mir eine alternative Lösung vor, um diese Situation zu bewältigen. Danke im Voraus.HTML5-Audio-Tag spielt keinen Ton für den allerersten unfokussierten Tab in Chrome und Safari?

+0

Also alles, was Sie wollen, ist ein Audio-Tag zu spielen, auch wenn Sie auf einem anderen Tab sind? – zer00ne

Antwort

4

Dies ist das erwartete Verhalten seit Chrome 46. Um die Browserleistung zu optimieren und Strom zu sparen, hat Google die automatische Wiedergabe auf den Hintergrundregisterkarten deaktiviert. Doch von Chrome starten 47, gibt es eine Möglichkeit für eine Person, die es zu überschreiben, indem ermöglicht der Chrome-Flagge

chrome: // flags/# disable-Geste-Anforderung-for-Medien-Wiedergabe

UPDATE: Chrome-Flag ist nicht mehr verfügbar, da Chrome 60 (danke @gordie)

Es gibt keine Abhilfe ist, das Sound erlauben würde, in dem 'Hintergrund' Tab zu spielen. Die Lösung besteht darin, keine Sounds zu spielen, bis die Seite fokussiert ist. Dazu können Sie entweder den Ereignishandler window.onfocus oder vorzugsweise die Visibility API() verwenden.

+0

Hallo! Danke für diese Information. Aber Soundcloud schafft es, also sollte es einen Workaround geben? – gordie

+0

Ich habe gerade SoundCloud in Chrome getestet. Es scheint nicht automatisch zu spielen. Wenn Sie beispielsweise diesen Link [eingebetteter SoundCloud-Player] in einem neuen Tab öffnen, https://w.soundcloud.com/player/?url=http://api.soundcloud.com/tracks/118596500&auto_play=true&buying=true&liking= true & shown = true & show_comments = true & show_playcount = true & show_user = true & ausblenden_related = false & visual = true & start_track = 0 & callback = true (Rechtsklick -> Link in neuem Tab öffnen), dann wird es nicht automatisch abgespielt, bis Sie den Tab fokussieren. – Xeos

+0

Es sind zwei "Hacks" möglich: 1) Wenn mehrere Registerkarten geöffnet sind, verwenden Sie das mindestens einmal zur Wiedergabe von Sounds verwendete. 2) Wenn die Registerkarte zuerst fokussiert wird, verwenden Sie Audio API, um einen stillen Clip abzuspielen. Auf diese Weise können Sie, wenn die Zeit gekommen ist, eine Wiedergabe starten, ohne auf die Person warten zu müssen, um den Tab zu fokussieren. – Xeos