Detached event

by shaseley

HTML

<!DOCTYPE html>
<meta charset="utf-8">
<title>Creating a new object in a detached realm</title>

<script>
'use strict';

(async function() {
  await new Promise((resolve) => {
    window.addEventListener('load', resolve);
  });

  const frame = document.createElement('iframe');

  frame.srcdoc = `<script>
    window.parent.controller = new AbortController();
  <\/script>`

  await new Promise((resolve) => {
    frame.addEventListener('load', resolve);
    document.body.appendChild(frame);
  });

  console.log('Child frame loaded. Starting test...');

  let didRun = false;
  function listener() {
    didRun = true;
  }

  controller.signal.addEventListener('abort', listener);

  window.document.body.removeChild(frame);

  window.controller.abort();
  console.log('Signal is aborted? : ' + window.controller.signal.aborted);
  console.log('Did the handler run? : ' + didRun);
})();
 
</script>