ビデオを再生し、再生できるビデオのリストを持つ Web ページをまとめようとしています。Chrome、Firefox、Opera では問題なく動作していますが、もちろん IE 8 では多くの問題が発生します。ビデオ プレーヤー自体は、Flash Flowplayer フォールバックを備えたネイティブの HTML 5 ビデオ プレーヤーです (ほぼ IE 8 専用です)。そのための HTML は次のようになります。
<video controls width="640" height="360">
<source id='mp4src' src="videos/foo.mp4" type="video/mp4">
<source id='webmsrc' src="videos/foo.mp4.webm" type="video/webm">
<a href="videos/foo.mp4" style="display:block;width:425px;height:300px;" id="player">
</a>
</video>
アンカー タグは、Flowplayer の一種のコンテナーであり、Flowplayer のドキュメントに従って行われます。
今、私が書いたjQueryは次のことをするはずです:
- 各リスト項目の 2 つの疑似属性 (それぞれにビデオの URL が含まれています) を取得し、それらを変数にします。
- video タグ内の 2 つの source タグを削除します
- video タグ内のアンカー タグを空にする
- 以前に作成した変数を src 属性として使用して、2 つの新しいソース タグを作成します。
- アンカー タグの href 属性を変数に変更します。
- アンカー タグを再設定するために Flowplayer 関数を実行します。
- ビデオをリロードする
そして、ここにjQuery自体があります
$(document).ready(function(){
$('.playlists11 #playlist li').click(function(){
var url1 = $(this).attr('url1');
var url2 = $(this).attr('url2');
$('.content video #mp4src').remove();
$('.content video #webmsrc').remove();
$('.content video a').empty();
$('.content video').prepend("<source id='webmsrc' src='" + url2 + "' type='video/webm'>");
$('.content video').prepend("<source id='mp4src' src='" + url1 + "' type='video/mp4'>");
$('.content video #player').attr('href',url1);
$f("player", "flowplayer/flowplayer-3.2.16.swf");
$('.content video').load();
});
});
これは、IE 8 を除くすべてのブラウザーで魅力的に機能します。SO誰かが教えてください、IE 8でしか動作しない私のコードの何が問題なのですか?