5

当用户将鼠标悬停在我的一个列表项按钮上时,是否可以使用 HTML5 发出声音?当用户将鼠标悬停在导航按钮上时,我想播放一个非常短的点击/啁啾声。我意识到它不会在每个浏览器或设备上都兼容,只要它优雅地降级就可以了。出于某种原因使用 Flash 会更好吗?

编辑
另外,如果可以做到这一点,我会对一些示例代码感兴趣,包括 javascript(如果需要 javascript)。我对 HTML 没问题,但对 Javascript 不太方便。

4

2 回答 2

7

我没有做过这样的事情,但它应该是可能的。例如

<audio id="myaudio" src="myaudio.mp3"></audio>

<button onmouseover="document.getElementById('myaudio').play()">Hover me</button>

我对 Flash 不熟悉,所以我不确定您是否可以使用 JavaScript 来获取要播放的 Flash 文件。

于 2011-03-10T03:54:28.547 回答
0

这是一个旧答案,现在你真的可以使用 HTML5。


我不建议在悬停时发出声音。用户很容易生气(我愿意)。

无论如何,这就是方法,它不需要 HTML5

1)有一个简单的javascript来播放声音

<script>
    function EvalSound(soundobj) {
        var thissound=document.getElementById(soundobj);
        try {
            thissound.Play(); //Quicktime, Windows Media Player, etc.
        }
        catch (e) {
            thissound.DoPlay(); //Real Player
        }
    }
</script>

2)用声音做一个不可见的嵌入

<embed src="mysound.wav" 
       autostart=false 
       width=0 
       height=0 
       id="mySound" 
       enablejavascript="true" />

3)让它在悬停时播放

<ul id="myList">
    <li onHover="EvalSound('mySound')">Foo</li>
    <li onHover="EvalSound('mySound')">Bar</li>
</ul>

或者,使用 jQuery 附加事件:

<script>
    $(document).ready(function() {
        $('#myList').hover(EvalSound('mySound'));
    });
</script>

编辑因为 realplayer 使用DoPlay()而不是Play().

于 2011-03-10T03:54:43.913 回答