<html> <head> <script id='worker' type='javascript/worker'> onmessage = function (e) { const file = e.data[0] const db = indexedDB.open('', {}) db.onupgradeneeded = function (event) { const store = event.target.result.createObjectStore('IDBStore_0', {}) store.add({}, '') } db.onsuccess = function (event) { const transaction = event.target.result.transaction('IDBStore_0', 'readwrite') const store = transaction.objectStore('IDBStore_0') const cursor = store.openCursor() cursor.onsuccess = function (event) { event.target.result.update({ data: file }) event.target.result.advance(1) } event.target.result.close() } } </script> <script> let worker; function start () { const file = new File([], 'x') const blob = new Blob([document.getElementById('worker').textContent], { type: 'text/javascript' }) worker = new Worker(window.URL.createObjectURL(blob)) worker.postMessage([file], []) } document.addEventListener('DOMContentLoaded', start) </script> </head> </html>