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
| "use strict";
|
| const { createEventAccessor } = require("../helpers/create-event-accessor");
|
| const events = new Set([
| // WindowEventHandlers
| "afterprint",
| "beforeprint",
| "beforeunload",
| "hashchange",
| "languagechange",
| "message",
| "messageerror",
| "offline",
| "online",
| "pagehide",
| "pageshow",
| "popstate",
| "rejectionhandled",
| "storage",
| "unhandledrejection",
| "unload",
|
| // inherited and overridden
| "blur",
| "error",
| "focus",
| "load",
| "resize",
| "scroll"
| ]);
|
| // This class builds on GlobalEventHandlers, which must be mixed in first.
| class WindowEventHandlersImpl {
| _proxyWindowEventsToWindow() {
| // We're a <body> or <frameset>, so we need to proxy these specific events to the Window (if it exists)
| this._getEventHandlerTarget = event => {
| if (events.has(event)) {
| return this.ownerDocument.defaultView || null;
| }
| return this;
| };
| }
| }
|
| for (const event of events) {
| createEventAccessor(WindowEventHandlersImpl.prototype, event);
| }
|
| module.exports = {
| implementation: WindowEventHandlersImpl
| };
|
|