无论我做什么,我根本无法在Firefox或IE或Chrome中播放声音。
<html>
<head>
<script type="text/javascript">
function play()
{
var embed = document.createElement('object');
embed.setAttribute('src', 'c:\\test.wav');
embed.setAttribute('hidden', true);
embed.setAttribute('autostart', true);
embed.setAttribute('enablejavascript', true);
document.childNodes[0].appendChild(embed);
}
// -->
</script>
</head>
<body onload="play();">
</body>
</html>
答案 0 :(得分:6)
尝试使用函数play()的修订版
function play()
{
var embed=document.createElement('object');
embed.setAttribute('type','audio/wav');
embed.setAttribute('data', 'c:\test.wav');
embed.setAttribute('autostart', true);
document.getElementsByTagName('body')[0].appendChild(embed);
}
您的代码存在的问题是您使用的是src属性,该属性适用于&lt; embed&gt;标签。而是使用&lt; object&gt;的数据属性。标签。
如果您试图获得最大的兼容性,您还应该考虑添加embed标记作为对象标记的替代。它的工作方式是这样的:
<object data="test.wav" type="audio/wav" autostart="true">
<embed src="test.wav" autostart="true" alt="Could not load audio" />
</object>
这类似于noscript标记,其中不支持object标记的旧浏览器使用embed标记。
答案 1 :(得分:2)
尝试此方法,在所有浏览器中播放声音:
function playSound(soundfile_ogg, soundfile_mp, soundfile_ma) {
if ("Audio" in window) {
var a = new Audio();
if (!!(a.canPlayType && a.canPlayType('audio/ogg; codecs="vorbis"')
.replace(/no/, '')))
a.src = soundfile_ogg;
else if (!!(a.canPlayType && a.canPlayType('audio/mpeg;').replace(/no/,
'')))
a.src = soundfile_mp;
else if (!!(a.canPlayType && a.canPlayType(
'audio/mp4; codecs="mp4a.40.2"').replace(/no/, '')))
a.src = soundfile_ma;
else
a.src = soundfile_mp;
a.autoplay = true;
return;
} else {
alert("Time almost up");
}
}
播放声音,做这样的事情:
playSound("/file/horse.wav", "/file/horse.mp3","/file/horse.m4a");
答案 2 :(得分:0)
使用<embed>
标记的FYI将使您的代码无效。目前,如果您想在网页上播放声音,则有两种选择: [1] 使用适用于当今大多数浏览器的方法,但这会使您的HTML无效(使用{{1} }},或 [2] 使用仅适用于某些最新浏览器的方法,但将来会采用这种方式,并且也被认为是有效的HTML(使用{{1 }或<embed>
)。