multi_sharedWorker_frame.html (1615B)
1 <!-- 2 Any copyright is dedicated to the Public Domain. 3 http://creativecommons.org/publicdomain/zero/1.0/ 4 --> 5 <!DOCTYPE HTML> 6 <html> 7 <head> 8 <title>Test for SharedWorker</title> 9 </head> 10 <body> 11 <script type="text/javascript"> 12 "use strict"; 13 14 function postMessageToParentOrOpener(message) { 15 if (parent != window) { 16 parent.postMessage(message, "*"); 17 } 18 } 19 20 function debug(message) { 21 if (typeof(message) != "string") { 22 throw new Error("debug() only accepts strings!"); 23 } 24 postMessageToParentOrOpener(message); 25 } 26 27 let worker; 28 29 window.addEventListener("message", function(event) { 30 if (!worker) { 31 worker = new SharedWorker("multi_sharedWorker_sharedWorker.js", 32 "FrameWorker"); 33 worker.onerror = function(error) { 34 debug("Worker error: " + error.message); 35 error.preventDefault(); 36 37 let data = { 38 type: "error", 39 message: error.message, 40 filename: error.filename, 41 lineno: error.lineno, 42 isErrorEvent: error instanceof ErrorEvent 43 }; 44 postMessageToParentOrOpener(data); 45 }; 46 47 worker.port.onmessage = function(msg) { 48 debug("Worker message: " + JSON.stringify(msg.data)); 49 postMessageToParentOrOpener(msg.data); 50 }; 51 } 52 53 debug("Posting message: " + JSON.stringify(event.data)); 54 worker.port.postMessage(event.data); 55 }); 56 </script> 57 </body> 58 </html>