代码之家  ›  专栏  ›  技术社区  ›  Aximili

jquery:如何预加载声音?

  •  10
  • Aximili  · 技术社区  · 15 年前

    我有一个网站,当你点击一个按钮时会播放声音。

    我就是这样做的

    function PlaySound(soundfile) {
        $('#soundContainer').html("<embed src='/uploads/sounds/" + soundfile + "' hidden=true autostart=true loop=false>");
    }
    

    如何预先预加载声音文件?

    谢谢您。

    5 回复  |  直到 9 年前
        1
  •  14
  •   Germán Rodríguez    15 年前

    在我脑子里想一想,你能不能对声音文件提出一个Ajax请求,但是在文件100%加载之前不要显示按钮。

    $(document).ready(function() {
        $.ajax({
            url: "soundfile.mp3",
            success: function() {
                $("#play_button").show();
            }
        });
    });
    
        2
  •  2
  •   Sasha Chedygov    15 年前

    有很多更好的方法可以用JavaScript播放声音。对于我最喜欢的,请查看 SoundManager . 有了它,你只需打电话 soundManager.load 预先加载声音文件。

        3
  •  2
  •   Justin Levene    9 年前

    在HTML5中这样做:

    my_sound = $("<audio>", {src:"filename.mp3",preload:"auto"}).appendTo("body");
    

    然后播放:

    my_sound[0].play();
    
        4
  •  0
  •   sanmai    15 年前
    1. 向它发出Ajax请求。如果服务器发出正确的缓存头(如 到期 )它将存储在浏览器缓存中。

    2. 丑陋的方式:

    soundfile = new Image(); 
    soundfile.src = /uploads/sounds/" + soundfile;
        5
  •  0
  •   Nicolás    15 年前

    没有这样的事情 <embed>

    你可以用一个 HTML5 <audio> 无元素 autoplay 然后让它开始玩 play() 方法。