0

ユーザーがクリックした後に音のあるメニューを作ろうとしています。Chrome、safari、さらには IE でも問題なく動作しますが、Mozilla Firefox では動作しません。Firefox では動作しない音声は mp3 ファイルを使用しています。これがコードです

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 に答える