【发布时间】:2013-01-02 11:38:00
【问题描述】:
我正在尝试使用 Knockout 动态更改 video 标记的视频源。这是代码:
<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 对源标签的生成方式非常挑剔。
【问题讨论】:
标签: javascript firefox knockout.js html5-video