在现场尝试了多种解决方案,none 有效:在 Konami 代码上播放 <audio>

Tried multiple solutions onsite, none worked: Play <audio> on Konami code

这是我在 Stack Overflow 上的第一个问题! :D 似乎有多个类似的问题,但我已经尝试了每个解决方案,并且 none 个解决方案都有效,但我决心弄个水落石出。目标是在成功输入 konami 代码后播放音频。

最简单的尝试如下(脚本在 head 中,音频在 body 中。我已经尝试了每个解决方案,无论是否将它们封装在 window.onload=function 中(){ } ):

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript" src="http://konami-js.googlecode.com/svn/trunk/konami.js"></script>

<script type="text/javascript">
  konami = new Konami(function() {
    document.getElementById('audio').play();
  });
</script>



<audio id="audio">
  <source src="js/ZipZipper.ogg" type="audio/ogg">
    <source src="js/ZipZipper.mp3" type="audio/mpeg">
</audio>

另一个尝试是这样的:

var konami = new Konami(function() {
  var audioElement = document.createElement('audio');
  audioElement.setAttribute('src', 'js/ZipZipper.ogg');
  audioElement.load();
  audioElement.addEventListener("load", function() {
    audioElement.play();
  }, true);
});

还有一个,像这样,再次使用 html 音频标签

        konami = new Konami(playsong);
        playsong = function play() {
          var audio = document.getElementById("audio");
          audio.play();
        }

我不知道为什么没有任何效果。一切似乎就绪!

根据docs,你可以这样做:

konami = new Konami();
konami.code = function(){
    document.getElementById('audio').play();
};
konami.load();

Fiddle Demo

注意:不确定 konami 序列是否必须如此,但工作序列是 上、上、下、下、左、右、左、右、b、a、输入