0

現在、タグとjavascriptが埋め込まれた古い手法を使用して、Webサイトでサウンドを使用しています。これらをHTML5に変換したいのですが、うまくいきません。

これは私が現在持っているコードです:

HTML:

<div class="au">
    <embed src="audio/tileSelect.wav" autostart="false" width="1" height="1" hidden="true" id="sound1" enablejavascript="true">
    <embed src="audio/tileRemove.wav" autostart="false" width="1" height="1" hidden="true" id="sound2" enablejavascript="true">
</div>

JS:

//Sounds
function playSound(soundobj) {
    if (document.getElementById('sound').checked) { //if this checkbox is checked, play sounds
        var thissound=document.getElementById(soundobj);
        thissound.Play();
    }
}

サウンドをトリガーするために他の機能で使用されるJS:

playSound('sound1');
playSound('sound2');

したがって、上記のすべてが機能します。これをHTML5に変換します。HTMLの部分は簡単です、私はそれがこのように見えるべきだと思います:

HTML5:

<!--HTML5 audio-->
<audio id="sound1" preload="auto">
    <source src="audio/tileSelect.wav" type="audio/wav" />
</audio>
<audio id="sound2" preload="auto">
    <source src="audio/tileRemove.wav" type="audio/wav" />
</audio>

しかし、JSの部分については、私はちょっと立ち往生しています。誰かがこれについて考えを持っていますか?に変更しようとしましsoundobjsoundidが、うまくいきませんでした。

どうもありがとう、モーリス

4

1 に答える 1

0

投稿したコードには2つの問題があります。

最初のものは、代わりにおそらく次のように読むべきマークアップです:

<audio id="sound1" src="audio/tileSelect.wav" preload="auto"></audio>
<audio id="sound2" src="audio/tileRemove.wav" preload="auto"></audio>

あなたが使用した<video>-like ソース表記はどこにも文書化されていません (ただし、間違っているとは思わないことを認めなければなりませんが、HTML5 オーディオをまだ使用したことがありません) 。MDN のドキュメントを参照してください。


編集:明らかに、source要素内でaudio要素を使用しても問題ありません:

許可されたコンテンツ: src 属性または 1 つ以上の要素のいずれかを含み、その後にフロー コンテンツまたはフレージング コンテンツ が続き、 または 要素を含まない透過的なコンテンツ。

参照: https://developer.mozilla.org/en/HTML/Element/audio

それでも、ソースファイルが 1 つしかないため、実際には必要ありません。


2 番目の問題は、.Play()(大文字の P) という存在しないメソッドを使用していることです.play()。したがって、JS は次のようになります。

function playSound(soundobj) {
    if (document.getElementById('sound').checked){
        document.getElementById(soundobj).play();
    }
}
playSound('sound2'); //should play 'audio/tileRemove.wav'
于 2012-04-17T12:21:31.527 に答える