Blame view

lib/jsdom/living/nodes/WindowEventHandlers-impl.js 1.06 KB
858f2bdf5   Boyan Georgiev   fixes
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
  };