<audio id="audioMusic" loop="loop">
<source src="/Music/behind_you.ogg" type="audio/ogg" />
<source src="/Music/behind_you.mp3" type="audio/mp3" />
</audio>
<script type="text/javascript">
var a = document.getElementById("audioMusic");
a.play();
</script>问题/问题:这与其他无数通过JavaScript控制音频的方法一样,在Chrome中工作得很好,在火狐或IE中不起作用。为什么?怎么能改变呢?
顺便说一句:是的,我知道我可以使用autoplay属性,这不是我想要的,因为我需要能够打开和关闭它,并通过JavaScript调整音量。是的,我知道背景音乐很烦人。
发布于 2011-07-31 18:21:22
如果您检查任何HTTP或HTTP中的请求(例如,Firebug中的"Net“面板,或任何其他浏览器的类似工具),您很可能会发现,尽管文件确实存在,但对.ogg文件的请求返回了404错误。
原因是-- IIS/IIS,以及Visual (Cassini) 如果文件扩展名未知,则不提供静态文件。中内置的开发web服务器(出于安全考虑,这是故意的)。
如果您的web服务器是IIS7.x或IIS (如果您在Windows /7/2008Server上可以轻松安装这些服务器),那么您需要为.ogg扩展添加mime类型(即“音频/ogg”)。您可以通过IIS轻松地完成此操作--请参阅相关问题以获得确切的步骤。如果您不能使用GUI -然后通过网站根文件夹中的web.config文件来完成它。例如:
<configuration>
<system.webServer>
<staticContent>
<mimeMap fileExtension=".m4v" mimeType="video/m4v" />
<mimeMap fileExtension=".ogg" mimeType="audio/ogg" />
<mimeMap fileExtension=".oga" mimeType="audio/ogg" />
<mimeMap fileExtension=".ogv" mimeType="video/ogg" />
<mimeMap fileExtension=".webm" mimeType="video/webm"/>
</staticContent>
</system.webServer>
</configuration>不幸的是,Visual中内置的开发web服务器(Cassini)不了解<system.webServer>。此外,Visual开发web服务器中的静态文件内容类型也是硬编码的(请查看此问题:https://stackoverflow.com/questions/5924647/setting-mime-types-using-the-asp-net-development-server)。
我无法找到如何告诉内置的web服务器什么是.ogg文件(如何添加mime类型)。
基于上述,我建议安装并开始使用IIS7.x或instead,而不是内置开发web服务器(如何将IIS/设置为用作web服务器而不是内置)。
https://webmasters.stackexchange.com/questions/17604
复制相似问题