【发布时间】:2014-01-16 21:23:28
【问题描述】:
我一直在玩 HTML5,但我似乎无法让视频在所有浏览器中正常播放。 IE 支持 HTML5 视频,但是当视频播放时,绿色透明背景会覆盖视频。如果你不知道在你的 IE 浏览器上播放这个video。这是一个Imgur 截图,IE11。
所以我的解决方法是将视频转换为 SWF 文件并实现下面的脚本
<?php
if (preg_match('~MSIE|Internet Explorer~i', $_SERVER['HTTP_USER_AGENT'])) {?>
<div id="flashContent">
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="100%" height="100%" id="flow" align="middle" style="">
<param name="movie" value="/index.files/Flow_Double_Size_v01.swf" />
<param name="quality" value="high" />
<param name="play" value="true" />
<param name="loop" value="true" />
<param name="wmode" value="transparent" />
<param name="scale" value="noscale" />
<param name="menu" value="false" />
<param name="devicefont" value="false" />
<param name="salign" value="" />
<param name="allowScriptAccess" value="sameDomain" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="/index.files/Flow_Double_Size_v01.swf" width="100%" height="100%">
<param name="movie" value="/index.files/Flow_Double_Size_v01.swf" />
<param name="quality" value="high" />
<param name="play" value="true" />
<param name="loop" value="true" />
<param name="wmode" value="transparent" />
<param name="scale" value="noscale" />
<param name="menu" value="false" />
<param name="devicefont" value="false" />
<param name="salign" value="" />
<param name="allowScriptAccess" value="sameDomain" />
<!--<![endif]-->
<a href="http://www.adobe.com/go/getflash">
<img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
</a>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>
</div>
<?php }else{ ?>
<div class="video-container">
<video autoplay="autoplay" loop class="bg-1">
<source src="/index.files/html5video/Flow_Updates_MP4_Codec_v02.m4v" type="video/mp4">
<source src="/index.files/html5video/Flow_Updates_MP4_Codec_v02.ogv" type="video/ogg">
<source src="/index.files/html5video/Flow_Updates_MP4_Codec_v02.webm" type="video/webm">
</video>
</div>
<?php }; ?>
所以我遇到的问题是,flash 播放器时不时地不会被 IE 解释,它什么也不会播放,有一天它会播放下一个它不是。我会清除缓存并在我们的客户计算机上进行测试,看看他们是否正在运行闪存阻止程序,而他们没有。当我在 IE 上使用开发人员工具查看源代码时,我意识到条件语句甚至没有被读取。
我从CSS Tricks 获得了 PHP 脚本,我还将在 cmets 中找到的脚本更新为 if (preg_match('~MSIE|Internet Explorer~i', $_SERVER['HTTP_USER_AGENT'])) { }
如果有替代方案,我将不胜感激。我还尝试了带有 Flash 嵌入的 HTML5 播放器的后备版本,但 IE 似乎没有回退到它。我需要 IE 来专门播放 SWF 文件。
【问题讨论】:
-
在这两种情况下,您都依赖浏览器的诚实向您的代码报告自己。使用 JS,您可以检查 JS 引擎中是否有特定功能可用。我会努力寻找一些资源。
-
stackoverflow.com/a/1042154/2191572 并确保查看获得 50+ 票的评论或css-tricks.com/snippets/javascript/…
-
@MonkeyZeus 使用 Modernizr 怎么样?这对于检测浏览器功能通常非常方便,您可以将其缩减为仅包含您需要的内容。不过总的来说同意 - 检测功能而不是检查特定浏览器是最好的方法。
-
@MonkeyZeus 谢谢。我会试一试并报告。
-
哦,哇,我什至没有考虑到您可能正在使用虚拟机,我猜是大海捞针,哈哈。我在所有可用的浏览器中对其进行了测试:IE 10+11、FF 和 Chrome,它们都可以完美运行,所以我希望这只是一个 VM 问题,否则 IE 11 的开发人员在某个地方犯了一个大错误
标签: javascript php internet-explorer html5-video