我想在按下表单中的提交按钮时添加声音,但无论我做什么,声音都没有完成。它是1秒长,但表格提交1秒钟,所以听起来真的很糟糕。这是代码:
创建声音:
<script type="text/javascript">
var html5_audiotypes={
"mp3": "audio/mpeg"
}
function createsoundbite(sound){
var html5audio=document.createElement('audio')
if (html5audio.canPlayType){
for (var i=0; i<arguments.length; i++){
var sourceel=document.createElement('source')
sourceel.setAttribute('src', arguments[i])
if (arguments[i].match(/\.(\w+)$/i))
sourceel.setAttribute('type', html5_audiotypes[RegExp.$1])
html5audio.appendChild(sourceel)
}
html5audio.load()
html5audio.playclip=function(){
html5audio.pause()
html5audio.currentTime=0
html5audio.play()
}
return html5audio
}
else{
return {playclip:function(){throw new Error("Your browser doesn't support HTML5 audio unfortunately")}}
}
}
var mouseClick=createsoundbite("sounds/cashSound.mp3")
</script>
HTML:
<form method='post' action='save.php'>
<input type='submit' name='apply' value='Play' onclick='mouseClick.playclip()' />
</form>
我尝试了setTimeout函数,但它没有用!有什么建议吗?
答案 0 :(得分:3)
尝试在playClip函数中返回false。这可能导致提交操作不会执行。您可以等待一秒钟并在表单元素上调用submit()。您也可以通过AJAX发送表格。
答案 1 :(得分:0)
不考虑美学,如果你真的希望声音完成,那么你需要延迟提交/延迟响应或在单独的框架中播放声音,这个框架没有嵌入到与表格相同的页面中