0

クリックすると、オーディオの src 属性が変更される jQuery 要素があります。HTML の変更をコンソールに出力したので、src が実際に変更されていることがわかります。Firefox (OSX 上) では問題ありません。ファイルの src が変更され、聞こえる音声も変更されます。

ただし、Chrome と Safari (OSX も同様) では、コンソールの src は以前と同じように変更されますが、再生されるオーディオは以前のファイルです。ボタンのクリックを繰り返すと、src が再び変更されますが、Chrome と Safari は最初のファイルしか再生しません。

以下は、「slarg」という単語を再生する最初の HTML です。

<audio id ="trget">
  <source id = "trget_wav" src = "slarg.wav" type = "audio/wav">
  <source id = "trget_mp3" src = "slarg.mp3" type = "audio/mp3">
</audio>

次に、ボタンをクリックすると、次の jQuery が実行されます。

$('#newWord').click(function() {
    var tar = $('#trget').html();
    console.log(tar);
    $("#trget_wav").attr("src",stim[2]).detach().appendTo("#trget");
    $("#trget_mp3").attr("src",stim[3]).detach().appendTo("#trget");
    var tar = $('#trget').html();
    console.log(tar);
});

これで、html は次のように変更されます。

<audio id ="trget">
  <source id = "trget_wav" src = "blerg.wav" type = "audio/wav">
  <source id = "trget_mp3" src = "blerg.mp3" type = "audio/mp3">
</audio>

しかし、Safari と Chrome ではまだ「slarg」という単語が再生されますが、FF では新しい単語「blerg」が再生されます...なぜですか? さらに重要なのは、Safari と Chrome で FF のように正しく動作させるにはどうすればよいでしょうか?

4

1 に答える 1

2

オーディオなどを再起動するには、 audio 要素でstop()load()、およびを呼び出す必要があります。play()

$('#newWord').click(function () {
    var audio = $('#trget').get(0);

    audio.pause();

    $("#trget_wav").prop('src', stim[2]);
    $("#trget_mp3").prop('src', stim[3]);

    audio.load();
    audio.play();
});
于 2013-06-26T11:38:34.670 に答える