2013-02-21 128 views
1

這裏的信息去:http://forums.blackmesasource.com/showthread.php?t=13235使用jQuery播放音頻懸停

我想在我的導航鏈接玩懸停的音頻文件。在通過鏈接移動時播放音頻文件的問題真的很快,就是它在再次播放之前播放整個文件,導致快速跨越鏈接時音頻延遲。

在上面的鏈接中解決這個問題的方法是添加load();

這是迄今爲止我jQuery代碼:

<script type="text/javascript"> 
    $("nav ul li").hover(function(){ 
     nav_audio.play(); 
     }, 
    function(){ 
     nav_audio.load(); 
    }); 
</script> 

我的HTML5代碼:

<audio id="nav_audio"> 
    <source src="nav.mp3" type="audio/mpeg"></source> 
    <source src="nav.ogg" type="audio/ogg"></source> 
</audio> 

沒有音頻播放上懸停,並沒有錯誤顯示在瀏覽器控制檯(瀏覽器)。

任何想法我做錯了,或爲什麼它不工作?我已經鏈接到jQuery文件,並且音頻標籤可以工作,因爲它們在別處沒有jQuery的情況下使用。我只能猜測這裏的問題與jQuery有關。

+0

你可能想看看這篇很棒的[關於CSS技巧的文章](http://css-tricks.com/play-sound-on-hover/) – Mottie 2013-02-21 21:35:13

回答

1

我想通了。它需要文檔就緒功能。所以,腳本稍微改變爲:

<script type="text/javascript"> 
$(document).ready(function(){ 
    $("nav ul li").hover(function(){ 
     nav_audio.play(); 
     }, 
    function(){ 
     nav_audio.load(); 
    }); 
}); 
</script> 
1
$(document).ready(function() { 
    var audioElement = document.createElement('audio'); 
    audioElement.setAttribute('src', 'audio.mp3'); 
    audioElement.setAttribute('autoplay', 'autoplay'); 
    $.get(); 
    audioElement.addEventListener("load", function() { 
    audioElement.play(); 
    }, true); 




    $('.play').on('hover',function(event) { 
     audioElement.play(); 
    }); 

    $('play)..unbind("mouseleave"); 

});

+1

即使在修改錯別字之後,我也無法使其工作。它也好像很多代碼。自動播放甚至不是必需的,因爲它是在音頻元素中定義的。 – Xarcell 2013-02-22 01:48:07