file_ship_beforeunload_fired.html (1196B)
1 <html> 2 <script> 3 onpageshow = function(pageShowEvent) { 4 var bc = new BroadcastChannel("ship_beforeunload"); 5 bc.onmessage = function(event) { 6 if (event.data.action == "register_beforeunload") { 7 onbeforeunload = function() { 8 bc.postMessage("beforeunload_fired"); 9 bc.close(); 10 } 11 if (event.data.loadNextPageFromSessionHistory) { 12 history.back(); 13 } else { 14 location.href += "?differentpage"; 15 } 16 } else if (event.data.action == "navigate_to_page_b") { 17 bc.close(); 18 if (event.data.blockBFCache) { 19 window.blockBFCache = new RTCPeerConnection(); 20 } 21 location.href += "?pageb"; 22 } else if (event.data.action == "back_to_page_b") { 23 if (event.data.forwardNavigateToPageB) { 24 history.forward(); 25 } else { 26 history.back(); 27 } 28 bc.close(); 29 } else if (event.data.action == "close") { 30 bc.close(); 31 window.close(); 32 } 33 } 34 bc.postMessage({type: pageShowEvent.type, persisted: pageShowEvent.persisted}); 35 } 36 </script> 37 </html>