file_content_javascript_loads_root.html (912B)
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="utf-8"> 5 <script type="application/javascript"> 6 "use strict"; 7 8 window.onload = () => { 9 opener.postMessage("ready", "*"); 10 }; 11 12 // eslint-disable-next-line no-shadow 13 function promiseMessage(source, filter = () => true) { 14 return new Promise(resolve => { 15 function listener(event) { 16 if (event.source == source && filter(event)) { 17 removeEventListener("message", listener); 18 resolve(event); 19 } 20 } 21 addEventListener("message", listener); 22 }); 23 } 24 25 // Sends a message to the given target window and waits for the response. 26 function ping(target) { 27 let msg = { ping: Math.random() }; 28 target.postMessage(msg, "*"); 29 return promiseMessage( 30 target, 31 event => event.data && event.data.pong == msg.ping 32 ); 33 } 34 35 function setFrameLocation(name, uri) { 36 window[name].location = uri; 37 } 38 </script> 39 </head> 40 <body> 41 </body> 42 </html>