声音完成后刷新页面

时间:2013-02-15 03:43:40

标签: codeigniter audio embed

我正在为我的网站使用codeigniter。我想在用户点击菜单时触发声音。但是点击它后页面刷新得太快,以至于听不到声音。如何在声音完成后刷新页面?

这是html:

<ul class="navigation">
    <li><a href="[link1]">Menu 1</a></li>
    <li><a href="[link2]">Menu 2</a></li>
    <li><a href="[link3]">Menu 3</a></li>
</ul>
<span id="dummy"></span>

这是javascript:

$(document).ready(function(){
    $(".navigation").click(function(){
        $("#dummy").html("<embed src='<?=base_url()?>sound/testing.mp3' hidden='true' autostart='true' loop='false' />");
    });
});

2 个答案:

答案 0 :(得分:0)

在您的函数中添加return false以避免在单击后立即刷新。

$(document).ready(function(){
        $(".navigation").click(function(){
            $("#dummy").html("<embed src='<?=base_url()?>sound/testing.mp3' hidden='true' autostart='true' loop='false' />");
return false;
        });
    });

答案 1 :(得分:0)

我没有做很多关于音频的工作,所以我不确定它的兼容性如何,但你的解决方案应该在某处

$(document).ready(function(){
    $(".navigation a").click(function(e){
        document.nextPage = $(this).attr('href')
        $("#dummy").html("<embed src='<?=base_url()?>sound/testing.mp3' hidden='true' autostart='true' loop='false' onended='followLink();' />");
        e.preventDefault();
    });
});

function followLink(){
   document.location.href = document.nextPage;
}

您正在使用onended事件继续前进。

更新

这是做同样事情http://jsfiddle.net/joshK/d5eNu/

的重要方式
$(document).ready(function(){
   $(".navigation a").click(function(e){
        var nextPage = $(this).attr('href');
        var audioObj = $("<audio>").attr({
            "hidden":true,
            "src":"<?=base_url()?>sound/testing.mp3"
        }).bind("ended",function(){//when sound finished playing follow the link

           document.location.href = nextPage;

        }).appendTo("#dummy");

        audioObj[0].play();
        e.preventDefault(); //prevent the page from refreshing 
    });
});