1

我有一个包含几个 js 库的应用程序。在其中一个中,我在顶部为我的 html5 音频定义了一个变量。然后我有一个被调用的函数,它加载一些 html 并将其放在一个 div 中。该 HTML 包含一个我想要单击以播放音频的按钮。然后我使用全局定义的“myaudio”变量加载音频。结构是这样的:

var myaudio = null;

function loadPage() {

    $.ajax({url:'myurl',
       success: function(myhtml) {
           $('#mydiv').html(myhtml);

           ... and then later....


            if (!editor && audiofile.length) { 
                var soundfile = "/media/audio/"+thisuid+"/sceneaudio/"+audiofile;
                myaudio = new Audio(soundfile).load();
                $('#audioButton').css('display','block');
                $('#audioButton').click(function() { myaudio.play(); });
            }
       }
   });
}

一切正常,除了当我点击按钮时,我得到一个“myaudio undefined”错误。我认为这是因为范围问题。在我点击并有效回调时,myaudio 不在调用范围内。这是一个正确的假设吗?我怎样才能解决这个问题?

我尝试将 click jquery 放在函数之外并使用 jquery .on 指令,但得到了相同的结果。

谢谢。

4

1 回答 1

0

我不完全确定,但也许你可以试试这个:

myaudio = new Audio(soundfile)
myaudio.addEventListener('canplaythrough', function () {
            $('#audioButton').css('display','block');
            $('#audioButton').click(function() { myaudio.play(); });
},false)
于 2013-10-28T23:12:32.837 回答