0

目前,我在我的网站上使用带有嵌入标签和 javascript 的旧技术使用声音。我想将这些转换为 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

您发布的代码有两个问题。

第一个可能是这样的标记:

<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 属性或一个或多个元素,后跟流程内容或短语内容,没有或元素。

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

您仍然不需要它,因为您只有一个源文件。


第二个问题是您使用的是.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 回答