0

我试图在用户点击后制作一个有声音的菜单。它适用于 Chrome、safari 甚至 IE,但不适用于 Mozilla Firefox。我将 mp3 文件用于无法在 Firefox 上运行的声音。这是代码

function loadSound (src) { 
    var sound = document.createElement("audio"); 
    if ("src" in sound) { 
        sound.autoPlay = false; 
    } 
    else { 
        sound = document.createElement("bgsound"); 
        sound.volume = -10000; 
        sound.play = function () { 
            this.src = src; 
            this.volume = 0; 
        } 
    } 
    sound.src = src; 
    document.body.appendChild(sound); 
    return sound; 
} 


$(document).ready(function () {
    var sound = loadSound("<?=base_url()?>sound/testing.mp3");  //  preload
    $(".main_nav a").click(function(){
        var ids = $(this).attr("id").split("-");
        var url = ids[2];
        sound.play();
        setTimeout (function(){window.location = url;}, 2000);
        return false;
    });
});

什么类型的音频文件可以在 Firefox 中使用?用户使用 firefox 时如何更改源文件?

4

1 回答 1

0

好的,我了解您的问题,我有一个解决方案。您可以使用我制作的此功能:

function getSupportedAudio(){
    var testEl = document.createElement( "audio" ), mp3, ogg;
    if ( testEl.canPlayType ) {
        mp3 = "" !== testEl.canPlayType( 'audio/mpeg;' );
        ogg = "" !== testEl.canPlayType( 'audio/ogg' );
    }

    if(mp3){
        return ".mp3";
    }
    else{
        return ".ogg";
    }
}

在你的函数 loadSound(src) 中使用这个:

sound.src = src+getSupportedAudio();
document.body.appendChild(sound);

并且在调用 loadSound 函数时,不要在参数中发送音频格式(但您需要将 ogg 和 mp3 这两个文件放在同一个文件夹中并具有相同的名称):

var sound = loadSound("<?=base_url()?>sound/testing");  //  preload
于 2013-02-15T11:01:06.827 回答