WebWorkers inline script

HTML

<input id="start" type="button" value="Get Random Values from Webworker" />
<div id="status">Preparing worker...</div>

JavaScript

function getWorkerJS() {
    var js = `
    var getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)) ||
                      (typeof(msCrypto) != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto));
        postMessage({type: 'status', message: 'Worker is ready...'});

        onmessage = function(e) {
          var array = new Uint8Array(10);
          getRandomValues();
    	    postMessage({type: 'randomValues', data: btoa(String.fromCharCode.apply(null, array))
})
        };
    `
    var blob = new Blob([js], {"type": "text\/plain"});
    return URL.createObjectURL(blob);
}

var ww = new Worker(getWorkerJS());

  ww.onmessage = function (msg) {
    console.log(msg)
    if (msg.data.type === 'status') {
	    document.getElementById('status').innerHTML = msg.data.message;  
    }

    if (msg.data.type === 'randomValues') {
    	alert('Random values received: ' + msg.data.data);
    }
};

document.getElementById('start').addEventListener('click', start, false);

function start() {
    ww.postMessage('start');
}