Jquery 单击声音按钮<;a>;标记,然后再移动到另一页

Jquery 单击声音按钮<;a>;标记,然后再移动到另一页,jquery,html,audio,Jquery,Html,Audio,我想在页面上的所有标记移动到另一个页面之前,为它们提供单击声音 我可以使用tag轻松播放咔哒声。。但是它不太好用,因为在我听到声音之前,页面已经移动到链接页面 我播放声音的代码如下: <audio id="audio" hidden> <source src="./sound/sound.mp3" type="audio/mpeg"> </audio> $('#menu li a').click(function(e) { e.preventDefault(

我想在页面上的所有标记移动到另一个页面之前,为它们提供单击声音

我可以使用tag轻松播放咔哒声。。但是它不太好用,因为在我听到声音之前,页面已经移动到链接页面

我播放声音的代码如下:

<audio id="audio" hidden>
<source src="./sound/sound.mp3" type="audio/mpeg">
</audio>

$('#menu li a').click(function(e) {
e.preventDefault(); // If I use this, it doesn't goes to another page. But I can here the sound. I want to play the sound and the link both.
var sound = $("#audio");
sound.get(0).play();
});

$(“#菜单a”)。单击(函数(e){
e、 preventDefault();//如果我使用这个,它不会转到其他页面。但是我可以在这里播放声音。我想同时播放声音和链接。
var声音=$(“#音频”);
sound.get(0.play();
});
任何小费都将不胜感激。谢谢。

试试这个

  $('#menu li a').click(function (e) {
       e.preventDefault();
       var sound = $("#audio");
       sound.get(0).play();

       setTimeout(function () {
           window.location.href = $(this).attr('href');
       }, 3000);

   });

你需要添加一个延迟,然后仍然转到你想要的页面,你可以这样做

$('#menu li a').click(function(e) {
          var destination = $(this).attr('href');
             e.preventDefault();
             var sound = $("#audio");
           sound.get(0).play();
 setTimeout(function() { window.location.href = destination; }, 1000);
    });

只需设置声音的时间或您希望等待的时间

在控件转到另一页之前,必须停止该页。为此,请使用return false(停止页面)和return true(移动控件)。下面的代码可能很难看,但我认为它会适合你

<script>
   function playsound()
   {
     return false;
     var sound = $("#audio");
     if(sound.get(0).play())
       return true;

   }
</script>

函数playsound()
{
返回false;
var声音=$(“#音频”);
if(sound.get(0.play())
返回true;
}
和html格式

   <a href="page.html" onclick="return playsound();">element</a>

这是您需要的。。。这将播放音频,一旦音频播放完毕,将转到目标位置

HTML

<audio id="audio" hidden>
    <source src="./sound/sound.mp3" type="audio/mpeg">
</audio>

<div id="menu">
    <li>
        <a href="http://www.google.com">Click to play...</a>
    </li>
</div>

代码每秒检查音频的状态,您可以更改超时值以减少检查频率。

这将阻止导航我完全忘记了这一点!让我来解决这个问题。这是不是要等到戏结束后才能改变位置?在这种情况下,这将比只等待一个固定的时间,因为我的答案没有我刚刚更新了我的答案,因为Ktash说,我以前的将阻止页面导航。海报想在离开页面前播放一段声音。看看这个,这和你想做的很相似。只是一个旁注,大多数人会觉得这很烦人。天才!很好!非常感谢!
var target;

function checkAudio() {
    if($("#audio")[0].paused) {
        window.location.href  = target;
    } else {
        setTimeout(checkAudio, 1000);
    }
}

$('#menu li a').click(function(e) {
    e.preventDefault();

    target = $(this).attr('href');

    console.log("Let's play");

    var sound = $("#audio");
    sound.get(0).play();

    setTimeout(checkAudio, 1000);
});