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');
}