我正在尝试使用JavaScript生成声音。我使用了以下代码
<html>
<script type="text/javascript" src="jquery-1.4.2.js"></script>
<script>
function PlaySound(soundObj) {
var sound = document.getElementById(soundObj);
sound.Play();
}
function init() {
//alert("");
PlaySound('sound1')
}
window.onload = init;
</script>
<body>
<form name="myform">
<input type=button id="b1" name="b1name" value="Play Sound" onClick="PlaySound('sound1')">
</form>
<a href="#" onMouseOver="PlaySound('sound1')">Move mouse here</A>
<embed src="beep-5.wav" autostart="false" width="0" height="0" id="sound1" enablejavascript="true">
</body>
</html>
按钮单击和鼠标悬停时生成声音。它不是在init
函数中生成的。如果我在另一个JavaScript函数中调用下面的函数,它就不起作用。另一点是,如果我在打电话前保持警觉,那么声音就会出现。
PlaySound('sound1')
我尝试使用$("#b1").click();
(在JavaScript中点击按钮),但它无效。
我知道这是this question的副本,但那里的答案对我不起作用。我真的很困惑。请帮忙。
我可以一次播放两次这样的声音吗?
答案 0 :(得分:0)
调用init
时声音文件可能尚未完成加载,但如果您包含alert
或手动单击某个按钮,则浏览器之间有足够的时间加载文件。
话虽如此,embed
是一个非标准且已弃用的标签,你真的不应该用它来播放声音。请改为查看HTML5 audio
tag。
答案 1 :(得分:0)
如果您希望网页通过JavaScript播放声音,并且您希望该页面为:
答案很简单:你不能这样做。故事结束。
当然,您可以在一个平台上提供一个适用于一个浏览器版本的示例,但我保证:它无处不在。
答案 2 :(得分:0)
快速而肮脏的方式(它也兼容旧浏览器,甚至是IE5)是使用可以在你的javascript中嵌入一个小波形文件然后可以作为资源播放(不保存到实际文件),使用二进制编码(与将PNG嵌入JS中相同)。 一个更好的方法是构建一个JS 音频对象,播放一些(带缓冲区),可以生成任何你想要的帧声音......
使用JS Audio Object
var output = new Audio();
output.mozSetup(1, 44100);
var samples = new Float32Array(22050);
for (var i = 0, l = samples.length; i < l; i++) {
samples[i] = Math.sin(i / 20);
}
(also here)
答案 3 :(得分:0)
如果我们使用jquery声音插件生成声音,http://plugins.jquery.com/project/sound_plugin在启动/ java脚本上播放声音没有太多延迟。在IE和Firefox中运行良好。
答案 4 :(得分:-1)
根据卡萨布兰卡的评论引入延迟,声音在java脚本中播放。这是我添加的代码: 此引用链接Introduce delay
function callback(){
return function(){
PlaySound('sound1');
}
}
function init() {
// alert("");
setTimeout(callback(), 500);
}