WebWorkerFromString

Function to create a Web Worker from a passed string. Returns undefined if no supported.

by Phil Nicholas

JavaScript

var workerJsCode = "self.onmessage=function(e){postMessage('Worker: '+e.data);}";
var w = WebWorkerFromString(workerJsCode);

// Define what to do when a message is recieved from the web worker
w.onmessage = function (e) {
    alert('Received a message from web worker: ' + e.data);
};

// Post a message to the web worker
w.postMessage('Test');

function WebWorkerFromString(s) {
    var blob;
    try {
        blob = new Blob([s]);
    } catch (e) { // Backwards-compatibility
        try {
            window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;
        } catch (e) {
            // All blob creation methods failed.
            return undefined;
        }
        blob = new BlobBuilder();
        blob.append(s);
        blob = blob.getBlob();
    }
    return new Worker(URL.createObjectURL(blob));
}