client-url-of-blob-url-worker.html (795B)
1 <!DOCTYPE html> 2 <html> 3 <script> 4 5 // Return a URL of a client when it's successful. 6 function createAndFetchFromBlobWorker() { 7 const fetchURL = new URL('get-worker-client-url.txt', window.location).href; 8 const workerScript = 9 `self.onmessage = async (e) => { 10 const response = await fetch(e.data.url); 11 const text = await response.text(); 12 self.postMessage({"result": text, "expected": self.location.href}); 13 };`; 14 const blob = new Blob([workerScript], { type: 'text/javascript' }); 15 const blobUrl = URL.createObjectURL(blob); 16 17 const worker = new Worker(blobUrl); 18 return new Promise((resolve, reject) => { 19 worker.onmessage = e => resolve(e.data); 20 worker.onerror = e => reject(e.message); 21 worker.postMessage({"url": fetchURL}); 22 }); 23 } 24 25 </script> 26 </html>