2013-08-08 5 views
8

を再生する前に、HTML5のビデオをインラインで再生することができます検出した場合プレーヤー。ブラウザ/デバイスは、私は、デバイスがiPhoneであれば、私は<code>navigator.userAgent</code>を通じて確認することができます知っているが、他のデバイスがあると、いくつかは、私はそれ自身でビデオを再生されますどのを認識していないよ

は、ビデオをインラインでプレーしていないすべてのブラウザ/デバイスのリストがあります行うことができますが、別の解決策があるのだろうか。

は、それはブラウザが、iPhone上のSafari例のために、それ自身のプレイヤーの代わりに、インラインでビデオを再生場合はJavaScriptを検出するには可能ですか?したがって、ビデオの代わりに画像のような代替案を表示することができます。

+0

の再生を開始した後、あなたがこの問題の解決策を見つけますか? – JSuar

+0

@JSuar解決策が見つかりませんでした。現時点では、ビデオがネイティブプレーヤーで自動的に再生されるかどうかをJavaScriptでチェックすることはできません。私は、ブラウザビルダーがブラウザにいくつかの追加情報を追加する必要があると思うので、 "navigator.video.playsInBrowser"のような読み方が可能です。 – Dairo

+0

これでも助けが必要な場合は、必要に応じてiPhoneのブラウザをif、else文として検出するコードがあります。もちろん、iPhoneはブラウザではなく、独自のビデオプレーヤーで再生します。 –

答えて

4

私は、これは古い質問ですけど、それは私にとって大きな問題だと多くの情報がオンラインにありません。しかし、このスレッドでアレクセイの答えを見つけた後、私はあなたの質問に答えることができます:Detect if client allows inline media playback for HTML5 video。ブラウザ/デバイスは、それを再生する前に、インラインビデオをサポートしている場合

いいえ、あなたは検出できません。悪いニュースだ

。問題は、iPhone上のiOS Safariのようなブラウザの唯一の確実なチェックは、ビデオを再生してから、即座にフルスクリーンのネイティブモードになったら盗聴することだけです。プレイイベントが発生したときに自動的に全画面表示になったプレイヤーを作れば、それでも失敗します。

少なくとも私にとっては、CSSのメディアクエリを使用して画面サイズを検出すると同時に再生を開始すると、それを検出することによって、私がしようとしていることを達成できるはずです。

ここでは、私のプレイヤーJSからの関連ビットを示します。このリンクは、上のリンクから非常に派生しています。

これだけ検出し、インラインサポートビデオ

// 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

この質問があなたがリンクした質問の正確な複製である場合は、その旨の回答を残す代わりに、それを複製としてフラグを立ててください。重複していない場合は、リンクのみの回答ではなく、この質問に完全な回答を残してください。 – josliber

+0

リンクされた質問の解決策は、ビデオの再生後にのみ機能するため、重複していません。正直なところ、私が残したのは、実際にはコメントです。私はまだ50の評判ポイントを打っていないので、私はコメントすることはできません。元のポスターに情報を提供する唯一の方法とこれを私が見つけた人は回答として入れることでした。 – avaunt

+0

私はそれを大きく拡張しました。あなたが今答えとしてそれを受け入れていないなら、単にそれをdownvotingの代わりに言うと私はただそれを削除します。 – avaunt

関連する問題

 関連する問題