1

私はいくつかの HTML5 をセットアップしましたが、すべてがクロスブラウザーで読み込まれています。

ビデオのサイズを取得するには、次のイベントを実行する必要があります。

$('#video').on('loadedmetadata',function(){
   var width=this.videoWidth, height=this.videoHeight;
   alert("meta has loaded!")
});

これは、Safari を除くすべてのブラウザで警告します。ロードされたメタデータが起動しなかった理由を突き止めようとして頭を悩ませていましたが、映画の再生を開始すると... 起動したことに気付きました。

ただし、ビデオを再生するには、ビデオのサイズを取得する必要があります。Safariでこれを行う方法はありますか

  • 他のブラウザのように Safari にメタデータを先にロードするように強制しますか?
  • loadedmetadata 以外の方法を使用しますか?

更新: Apple サイトの正確なコードは次のとおりです。

<!doctype html>
<html>
<head>
    <title>Resizing Movies</title>
    <script type="text/javascript">
        // set height and width to native values
        function naturalSize() {
            var myVideo = document.getElementsByTagName('video')[0];
            myVideo.height = myVideo.videoHeight;
            myVideo.width = myVideo.videoWidth;
            alert("pulling dimensions!")
        }
        // register listener function on metadata load
        function myAddListener(){
            var myVideo = document.getElementsByTagName('video')[0];
            myVideo.addEventListener('loadedmetadata', naturalSize, false);
        }
    </script>
</head>
<body onload="myAddListener()">
     <video src="http://homepage.mac.com/qt4web/myMovie.m4v" controls>
     </video>
</body>
</html>

ただし、イベント リスナーは、ビデオが呼び出されるまで起動しません。つまり、ビデオの再生が始まるまで寸法を引き出すことができません。これは他のブラウザでは警告しますが、Safari では警告しません。

したがって、これを解決する方法がわかりません。

ありがとう!

4

0 に答える 0