Worker Helper Function

by bmknight

HTML

<script type="text/worker" id="myworker">
    self.addEventListener('message', function(e) {
      self.postMessage(e.data + " I'm a worker!!");
    }, false);
</script>

JavaScript

//Worker helper function provided by Brian Grinstead
//This helper function is used to allow the loading of a web worker without the
//need for an external javascript file
var WorkerHelper = (function() {
    
    var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;
    var URL = window.URL || window.webkitURL;
    
    function getURL (script) {
        if (window.Worker && BlobBuilder && URL) {
            var bb = new BlobBuilder();
            bb.append(script);
            return URL.createObjectURL(bb.getBlob());
        }
    
        return null;
    };
      
    function getWorker (script, onmessage) {
        var url = getURL(script);
        if (url) {
            var worker = new Worker(url);
            worker.onmessage = onmessage;
            return worker;
        }
    
        return null;
    };
    
    return {
        getURL: getURL,
        getWorker: getWorker     
    }
        
})();
    
    
var myWorker = WorkerHelper.getWorker(
    document.getElementById('myworker').textContent,
    function(e) {
        alert(e.data);
    }
);

myWorker.postMessage("Yo Yo Yo");