| <!DOCTYPE html> |
| <body> |
| <script> |
| function handleMessage(e) { |
| if (e.data == "focus") { |
| let button = document.querySelector("button"); |
| button.onfocus = () => e.source.postMessage({focused: true}, {targetOrigin: "*"}); |
| button.focus(); |
| } |
| |
| if (e.data == "focus-update-active-element") { |
| let button = document.querySelector("button"); |
| button.focus(); |
| e.source.postMessage({activeElementUpdated: document.activeElement === button}, {targetOrigin: "*"}); |
| } |
| } |
| |
| if (window.portalHost) |
| window.portalHost.onmessage = handleMessage; |
| |
| window.onmessage = handleMessage; |
| |
| window.onportalactivate = e => { |
| let portal = e.adoptPredecessor(); |
| document.body.appendChild(portal); |
| portal.onmessage = handleMessage; |
| }; |
| |
| window.onfocus = () => { |
| if (window.portalHost) |
| window.portalHost.postMessage("window focused"); |
| }; |
| </script> |
| <button>A</button> |
| </body> |