video
Knockout を使用して、タグのビデオ ソースを動的に変更しようとしています。これはコードです:
<div data-bind="if: resource().encodingformats() != ''">
<video style="max-width: 100%;" controls>
<!-- ko with: resource() -->
<source data-bind="attr:{ src: webmUrl }" type='video/webm; codecs="vp8, vorbis"'>
<source data-bind="attr:{ src: oggUrl }" type='video/ogg; codecs="theora, vorbis"'>
<source data-bind="attr:{ src: mp4Url }" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'>
<!-- /ko -->
</video>
</div>
バインディングを使用してif
、現在のリソースが変更されるたびに新しいビデオ タグがレンダリングされるようにしています。
これは、Firefox を除くすべてのブラウザーで機能します。Firefox で次のエラー (実際には警告) が表示される
<source> element has no "src" attribute. Media resource load failed.
source
要素が属性を設定せずに一瞬レンダリングされていると思いsrc
ますが、それが原因で爆破されていますか?
これを修正する簡単な方法はありますか?ビデオの html 全体をバインドすることもできると思いますが、それはあまりにもずさんなようです。IE9 で正常に動作するのと同じコードで Firefox を動作させる簡単な方法はありますか?
編集
また、Firebug を使用して生成された html を確認した後、source
タグ全体をコードに挿入したところ、問題なく動作しました。言い換えれば、ノックアウト バインディングを 1 分間捨てて、ノックアウトが生成していた html にコピーしたところ、すべてが機能しました。
最も確実な問題は、Firefox がソース タグの生成方法に非常にうるさいことです。