我正在尝试通过 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 中确实有效。
我似乎无法理解为什么这不起作用,我希望有人可以帮助我解决问题!
谢谢
最佳答案
当您将视频嵌入 iframe 时,来源 (Yahoo) 似乎错误地确定了 IE11 中嵌入框架的浏览器类型。通过查看 Yahoo 源代码,他们进行了一些浏览器检查,甚至尝试将视频标签添加到标记中。如果这些都失败了,代码会说使用默认值,即设置为闪存。
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 中添加了视频标签。修改用户代理确实修复了它。也许两者兼而有之。
遗憾的是,我认为您只能等待他们修复视频控件。
关于javascript - 嵌入雅虎!使用 IE11 的视频失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20268173/