我正在尝试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,但这似乎过于草率。有没有一种简单的方法可以让 Firefox 使用在 IE9 中正常工作的相同代码?
编辑
我还应该提到,在使用 Firebug 查看生成的 html 之后,我将整个source
标签处理到我的代码中,并且效果很好。换句话说,我放弃了淘汰赛绑定一分钟,并复制了淘汰赛正在生成的 html,一切正常。
最肯定的问题是 Firefox 对如何生成源标签非常挑剔。