【发布时间】:2014-07-22 08:30:45
【问题描述】:
以下代码在 IE9+(以及 Firefox 和 Chrome)中播放声音。是否有一个库可以为 IE8 实现/填充缺失的功能(audio 元素和play() 方法)?
我无法让 mediaelement.js 工作,使用 jQuery 或将 <object> 放入 <audio> 看起来很难看。一些全局初始化(如 shim.init(somepath))让 shim 找到它的 flash 文件很好,但是每个标签的代码在我看来是错误的,因为它应该可以自动化。
<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
function foo()
{
var audio = document.getElementById('foo')
audio.play()
}
</script>
</head>
<body>
<audio id="foo" preload="none">
<source src="foo.mp3" type="audio/mpeg">
<source src="foo.ogg" type="audio/ogg">
Your browser does not support the audio element.
</audio>
<button onclick="foo()">Play</button>
</body>
</html>
【问题讨论】:
-
将
object放在audio中没有任何问题。根据规范“可以在音频元素内提供内容。用户代理不应向用户显示此内容;它适用于不支持音频的旧版 Web 浏览器,因此可以尝试使用旧版音频插件......”。 -
我知道它符合标准。这就是为什么我称它为丑陋的。它很丑陋,因为它在兼容的浏览器中是不必要的,并且可以由 shim 自动插入。 shim 的概念是我可以假设我的浏览器是合规的,即使它不合规,我也不必在我的代码中添加与修复不合规相关的语句。
-
为什么离题?这是一个关于垫片可能性的问题。
标签: javascript html internet-explorer-8 mediaelement.js shim