summaryrefslogtreecommitdiffstats
path: root/dom/base/test/browser_multiple_popups.html
blob: 6e0b85ea066afc403bb7ce557a06ce621eb8877d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<!DOCTYPE html>
<html>
<body>
  <button onclick="openPopups();" id="openPopups">open popups</button>
  <button onclick="openNestedPopups();" id="openNestedPopups">open tested popups</button>
  <button onclick="openPopupAndClick();" id="openPopupAndClick">open popups and click</button>
  <button onclick="closeAllWindows();" id="closeAllWindows">close all windows</button>
  <button onclick="openPopupInFrame();" id="openPopupInFrame">open popup in frame</button>
  <input type="text" id="input" />
  <script>
let windows = [];

function openPopups() {
  windows.push(window.open('empty.html', '_blank', 'width=100,height=100'));
  windows.push(window.open('empty.html', '_blank', 'width=100,height=100'));
}

function openNestedPopups() {
  var w = window.open('empty.html', '_blank', 'width=100,height=100');
  windows.push(w);
  windows.push(w.open('empty.html', '_blank', 'width=100,height=100'));
}

var recursion = false;
function openPopupAndClick() {
  windows.push(window.open('empty.html', '_blank', 'width=100,height=100'));
  if (!recursion) {
    recursion = true;
    document.getElementById("openPopupAndClick").click();
  }
}

function openPopupInFrame() {
  let iframe = document.createElement("iframe");
  iframe.style.display = "none";
  document.body.appendChild(iframe);
  windows.push(iframe.contentWindow.open('empty.html', '_blank', 'width=100,height=100'));
  iframe.remove();
}

function closeAllWindows() {
  windows.forEach(w => {
    try {
      w.close();
    } catch(e) {}
  });
}

if (location.search.includes("openPopups")) {
  let id = setInterval(() => {
    if (document.getElementById('start')) {
      clearInterval(id);
      openPopups();
    }
  }, 500);
}

document.getElementById("input").onmouseup = _ => {
  openPopups();
}
  </script>
</body>
</html>