我发现HTML5视频标签存在问题,让我非常困惑。如果我在段落标签内嵌入视频标签,在某些浏览器中它就无法正常工作。
有人能给我提供一些解决方案吗?
由于视频标签有点棘手,所以需要进行一些解释来说明问题。为了演示,这里有一个可以运行的HTML5页面。它使用了一个来自Microsoft网站的便利的.mp4测试视频:
<!DOCTYPE html>
<html>
<head><title>video with no para</title></head>
<body>
<video controls>
<source src="http://ie.microsoft.com/testdrive/graphics/videoformatsupport/big_buck_bunny_trailer_480p_high.mp4"
type='video/mp4'/>
These words and the button below should not be visible
in an HTML5 browser
<form method='get' action='www.microft.com'>
<input type='submit' value='MS Home'</form>
</video>
</body>
</html>
一个HTML5视频标签可以有一个或多个源标签,每个标签提供某种格式的视频。浏览器将显示它可以处理的一个视频。为了应对不理解HTML5的浏览器,视频标签可以在源标签之外包含额外的内容。HTML5浏览器应该忽略这些额外的内容。非HTML5浏览器应该忽略它不理解的任何标签(在这种情况下是视频和源标签),因此它将忽略视频并只呈现其他内容。在现实世界中,其他内容通常会提供一些下载和播放视频的方式。在本例中,其他内容是一些文本和一个显示按钮的表单。
因此,不同的浏览器将以不同的方式显示此页面。最新版本的Chrome和IE都理解HTML5,它们知道如何呈现.mp4源,因此应该呈现视频。它们不应该显示文本或按钮。
最新版本的Firefox处理HTML5,但不知道如何播放.mp4。它需要ogg格式的视频。它通过显示视频应该出现的黑框来处理这个问题。然而,再次强调,它不应该显示文本或按钮。
不支持HTML5的旧版浏览器应该只显示文本和按钮。
上面显示的HTML按预期工作。如果我在视频部分周围包装一个段落,则会出现问题。
<!DOCTYPE html>
<html>
<head><title>video with para</title></head>
<body>
<p>
<video controls>
<source src="http://ie.microsoft.com/testdrive/graphics/videoformatsupport/big_buck_bunny_trailer_480p_high.mp4"
type='video/mp4'/>
These words and the button below should not be visible
in an HTML5 browser
<form method='get' action='www.microft.com'>
<input type='submit' value='MS Home'</form>
</video>
</p>
</body>
</html>
IE 9版本正常工作 - 它显示视频而没有文本和按钮。
Chrome 17.0.963.56 m版本显示视频,忽略文本(应该如此),但它在视频面板下方显示按钮。
Firefox 9.0.1显示与之前相同的黑色框,但也显示按钮。
如果只有一个浏览器出现这种情况,我会认为这只是一个简单的bug。令我困惑的是,Chrome和Firefox都以相同的方式中断。
当然,您可以认为将视频包装在段落标记中毫无意义,但我认为这不应该引起问题。另外,我想知道其他包装器可能会破坏它。
Firebug显示HTML的解释方式。
<span>
)的地方替换任何元素都会导致相同的故障。但事实并非如此,只有<p>
元素会表现出这种行为。 - Alohci