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>
|