嵌入Yahoo!使用IE11的视频失败

时间:2013-11-28 14:03:55

标签: javascript jquery html iframe video

我正在尝试通过iframe将视频嵌入到html中

<iframe width="100%" height="351" scrolling="no" frameborder="0"   src="http://finance.yahoo.com/video/playlist/cnbc-big-data/best-worst-housing-markets-132811012.html?format=embed&player_autoplay=false"></iframe>

此视频在Firefox中运行良好。但是,当我试图在IE11中查看iframe嵌入式视频时,它不起作用,而是给我发出消息“你需要Adobe Flash播放这个视频” - 如果从原始链接查看,这在IE11中有效。 / p>

我似乎无法理解为什么这不起作用,我希望有人可以帮我解决问题!

谢谢

1 个答案:

答案 0 :(得分:2)

看起来当您将视频嵌入到iframe中时,源(Yahoo)错误地确定了IE11中嵌入式帧的浏览器类型。通过雅虎来源,他们会进行一些浏览器检查,甚至尝试将视频标签添加到标记中。如果这些都失败了,代码会说使用默认值,默认设置为flash。

http://yep.video.yahoo.com/js/3/videoplayer-min.js?lang=en-US  


getRendererType: function (al) {
        var am = "html";
        if (f.Lang.isString(al.mobile) || f.Lang.isNumber(al.ios) || al.android > 0) {
            return am;
        }
        if ((navigator && navigator.userAgent) && ((navigator.userAgent.indexOf("MSAppHost") >= 0) || (/.+MSIE 10.+Windows NT.+WebView/i.test(navigator.userAgent)))) {
            return am;
        }
        if (this._fallBackTOHTML5(al)) {
            return am;
        }

        function Y() {
            return !!document.createElement("video").canPlayType;
        }
        if (this._preferHTML5 && Y()) {
            return am;
        }
        return this._defaultRenderer;

然而,将浏览器代理更改回IE10,渲染类型成功并显示视频。

IE10 Render

虽然它只是一个猜测,但我打赌IE11使用的新用户代理字符串以某种方式告诉该视频组件控件错误地呈现。不幸的是,在视频播放器中有如此多的代码,它真的难以解开。

<强>更新 我已经尝试修改navigator.userAgent字符串以显示为IE10而没有任何运气 Sample

<强> UPDATE2: 我不认为它是用户代理字符串。它必须是在IE11中的iframe中添加视频标签的东西。修改用户代理确实修复了它。也许这两者都有。

可悲的是,我认为你只需等待他们修复视频控制。