Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTML5中的音频有什么问题?_Javascript_Html_Dom Events_Html5 Audio - Fatal编程技术网

Javascript HTML5中的音频有什么问题?

Javascript HTML5中的音频有什么问题?,javascript,html,dom-events,html5-audio,Javascript,Html,Dom Events,Html5 Audio,我对HTML5和JavaScript的音频内容感到非常愤怒。当它已经在HTML中时,它工作得很好,但由于我将它移动到JavaScript,它就不工作了。我不希望使用jQuery,因为我希望将大小保持尽可能低。 所有函数都存在,变量也是如此。Chrome没有给我任何错误,但是网络下的Chrome开发者工具说;挂起。所以我知道它得到了所有的数据,但它什么也不返回。它不返回加载和或oncanplay 请有人能给我一些建议,我可能做错了或可能的错误在铬 function loadAudio(loc,af

我对HTML5和JavaScript的音频内容感到非常愤怒。当它已经在HTML中时,它工作得很好,但由于我将它移动到JavaScript,它就不工作了。我不希望使用jQuery,因为我希望将大小保持尽可能低。 所有函数都存在,变量也是如此。Chrome没有给我任何错误,但是网络下的Chrome开发者工具说;挂起。所以我知道它得到了所有的数据,但它什么也不返回。它不返回加载和或oncanplay

请有人能给我一些建议,我可能做错了或可能的错误在铬

function loadAudio(loc,after){
        window.itemsToLoad++;
        var aud = new Audio(loc);
        if(typeof(after)=="function"){
            aud.addEventListener('load', function () {updateLoaders();alert('Yes');after(aud);}, false);
        }else{
            aud.addEventListener('load', function () {alert('Yes');updateLoaders();},false);
        }
        aud.preload="none";
        aud.addEventListener('onerror', function () {alert('Error');updateErrorLoaders();},false);
        aud.addEventListener('onabort', function () {alert('abort');updateErrorLoaders();},false);
        aud.addEventListener('onemptied', function () {alert('empty');updateErrorLoaders();},false);
        aud.type="type=\"audio/ogg\"";
        aud.controls="controls";
        aud.load();
        return aud;
    }
window.imageBackground = loadImage('images/background2.png',function (img) { alert("Yes it bloody works ;)");});

我注意到你的代码有一些问题。首先,您定义了一个
loadAudio
函数,但实际上您正在调用
loadImage('images/background2.png',fn)
。我想这只是复制和粘贴代码时的一个失误。其次是

function updateLoaders() {
    // do stuff
}

function updateErrorLoaders() {
    // do stuff
}

function loadAudio(src, loadComplete, playComplete) {
    window.itemsToLoad++;
    var audio = new Audio();

    // Playback has completed.
    audio.addEventListener('ended', function () {
        if (typeof playComplete === 'function') {
            playComplete(audio);
        }
    }, false);
    // The entire song has loaded (not necessarily done playing).
    audio.addEventListener('loadeddata', function () {
        updateLoaders();

        if (typeof loadComplete === 'function') {
            loadComplete(audio);
        }
    }, false);

    // Handle errors.
    audio.addEventListener('error', function () {
        console.log('error');
        updateErrorLoaders();
    }, false);
    audio.addEventListener('abort', function () {
        console.log('abort');
        updateErrorLoaders();
    }, false);
    audio.addEventListener('emptied', function () {
        console.log('empty');
        updateErrorLoaders();
    }, false);

    audio.preload = 'none';
    audio.src = src;
    audio.controls = 'controls';
    audio.load();

    return audio;
}

var audio = loadAudio('Example.ogg', function (audio) {
    console.log('audio completely loaded');
    audio.play();
});