100 audio start/stop

Starts and stops the same audio node 100 times. Testing what's causing a Chrome 9 freeze.

by parente

HTML

<button id="go">Click to run test</button>

CSS

body {
    font-family: sans-serif;
}
h1 {
    font-size: 1.5em;
}

p {
    margin-top: 1em;
    margin-bottom: 1em;
}

JavaScript

function onStart(event) {
    console.log('start event: ' + event.target.id);
}

function onPause(event) {
    console.log('pause event: ' + event.target.id);
}

function onEnded(event) {
    console.log('end event: ' + event.target.id);
}

function onError(event) {
    console.error('error event (' + event.target.error + '): ' + event.target.id);
}

document.getElementById('go').addEventListener('click', function() {
    var url = 'http://static.mindtrove.info/test.ogg';
    var s = new Audio(url);
    // hook up listeners
    s.addEventListener('play', onStart, false);
    s.addEventListener('pause', onPause, false);
    s.addEventListener('ended', onEnded, false);
    s.addEventListener('error', onError, false);

    var i = 0;
    var splay = function() {
        setTimeout(function() {
            s.url = url;
            s.play();
            sstop();
        }, 0);    
    };
    
    var sstop = function() {
        setTimeout(function() {
            s.pause();
            s.url = '';
            if(i++ < 100) {
                splay();
            }
        }, 50);      
    };
    
    splay();
}, false);