嵌入雅虎!使用 IE11 的视频失败
Posted
技术标签:
【中文标题】嵌入雅虎!使用 IE11 的视频失败【英文标题】:Embedding Yahoo! Video Using IE11 Fails 【发布时间】:2013-12-14 14:41:30 【问题描述】:我正在尝试通过 iframe 将视频嵌入到 html 中
<iframe 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 中确实有效。
我似乎无法理解为什么这不起作用,我希望有人可以帮助我解决问题!
谢谢
【问题讨论】:
您确定安装了适用于 IE 的 Adobe Flash 吗?插件运行了吗?? 另外,我认为IE10和IE11不支持通过“metro”界面使用flash...需要使用桌面版浏览器才能查看flash。 正如我在原始帖子中所说的那样,该视频确实可以作为原始源上的 Flash 插件工作 - 只是在尝试通过 iframe 将其添加为嵌入式视频时它不起作用。 .. 我使用的是 Windows 7 而不是 8。 ***.com/questions/17199683/… 适用于 IE7。也适用于 IE11 我还想指出 YouTube 嵌入式视频 iframe 工作得非常好。只是不想在 IE11 中工作的雅虎链接 --- 不过在 FireFox 和 Safari 中工作正常。 【参考方案1】:看起来当您将视频嵌入 iframe 时,源 (Yahoo) 错误地确定了 IE11 中嵌入帧的浏览器类型。通过查看 Yahoo 源,他们会进行一些浏览器检查,甚至尝试将视频标签添加到标记中。如果这些都失败了,代码会说使用默认设置,即设置为 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,渲染类型成功,视频显示。
虽然这只是一个猜测,但我敢打赌 IE11 使用的新用户代理字符串会以某种方式告诉此视频组件控件不正确地呈现。不幸的是,视频播放器中有太多代码,很难解开。
更新: 我尝试修改 navigator.userAgent 字符串以显示为 IE10 没有任何运气 Sample
更新 2: 我不认为这是一个用户代理字符串。一定是在 IE11 的 iframe 中添加视频标签。修改用户代理确实可以解决它。也许两者兼而有之。
遗憾的是,我认为您只需要等待他们修复视频控件即可。
【讨论】:
非常感谢您的帮助! 帮不上什么忙...也许有人会看到我的进步并想出其他办法来尝试。以上是关于嵌入雅虎!使用 IE11 的视频失败的主要内容,如果未能解决你的问题,请参考以下文章