location-reload-srcdoc.html 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <!DOCTYPE html>
  2. <script src="../include.js"></script>
  3. <script>
  4. let reloaded = false;
  5. window.addEventListener('message', event => {
  6. switch (event.data.action) {
  7. case "loaded":
  8. println("iframe is loaded");
  9. if (!reloaded) {
  10. event.source.postMessage({ action: 'reload' });
  11. reloaded = true;
  12. } else {
  13. internals.signalTextTestIsDone();
  14. }
  15. break;
  16. case "acknowledge-asked-to-reload":
  17. println("iframe is going to reload");
  18. break;
  19. default:
  20. break;
  21. }
  22. });
  23. const iframeScript = `
  24. window.addEventListener('message', event => {
  25. if (event.data && event.data.action === 'reload') {
  26. window.parent.postMessage({ action: 'acknowledge-asked-to-reload' });
  27. location.reload();
  28. }
  29. });
  30. window.addEventListener('load', () => {
  31. window.parent.postMessage({ action: 'loaded' });
  32. });
  33. `;
  34. document.addEventListener("DOMContentLoaded", () => {
  35. const iframe = document.createElement('iframe');
  36. iframe.srcdoc = "<script>" + iframeScript + "<\/script>";
  37. document.body.appendChild(iframe);
  38. });
  39. </script>