happy-dom 8.6.0 → 8.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of happy-dom might be problematic. Click here for more details.

Files changed (59) hide show
  1. package/README.md +11 -1
  2. package/lib/config/ElementTag.d.ts +2 -1
  3. package/lib/config/ElementTag.js +2 -1
  4. package/lib/config/ElementTag.js.map +1 -1
  5. package/lib/config/NonImplemenetedElementClasses.js +0 -1
  6. package/lib/config/NonImplemenetedElementClasses.js.map +1 -1
  7. package/lib/event/IMessagePort.d.ts +23 -0
  8. package/lib/event/IMessagePort.js +3 -0
  9. package/lib/event/IMessagePort.js.map +1 -0
  10. package/lib/event/MessagePort.d.ts +24 -0
  11. package/lib/event/MessagePort.js +36 -0
  12. package/lib/event/MessagePort.js.map +1 -0
  13. package/lib/event/events/IMessageEventInit.d.ts +10 -0
  14. package/lib/event/events/IMessageEventInit.js +3 -0
  15. package/lib/event/events/IMessageEventInit.js.map +1 -0
  16. package/lib/event/events/MessageEvent.d.ts +23 -0
  17. package/lib/event/events/MessageEvent.js +34 -0
  18. package/lib/event/events/MessageEvent.js.map +1 -0
  19. package/lib/index.d.ts +3 -1
  20. package/lib/index.js +3 -1
  21. package/lib/index.js.map +1 -1
  22. package/lib/nodes/html-iframe-element/HTMLIFrameElement.d.ts +126 -0
  23. package/lib/nodes/html-iframe-element/HTMLIFrameElement.js +246 -0
  24. package/lib/nodes/html-iframe-element/HTMLIFrameElement.js.map +1 -0
  25. package/lib/nodes/html-iframe-element/IFrameCrossOriginWindow.d.ts +29 -0
  26. package/lib/nodes/html-iframe-element/IFrameCrossOriginWindow.js +47 -0
  27. package/lib/nodes/html-iframe-element/IFrameCrossOriginWindow.js.map +1 -0
  28. package/lib/nodes/html-iframe-element/IHTMLIFrameElement.d.ts +24 -0
  29. package/lib/nodes/html-iframe-element/IHTMLIFrameElement.js +3 -0
  30. package/lib/nodes/html-iframe-element/IHTMLIFrameElement.js.map +1 -0
  31. package/lib/nodes/html-link-element/HTMLLinkElement.js +2 -1
  32. package/lib/nodes/html-link-element/HTMLLinkElement.js.map +1 -1
  33. package/lib/nodes/html-script-element/HTMLScriptElement.js +1 -1
  34. package/lib/nodes/html-script-element/HTMLScriptElement.js.map +1 -1
  35. package/lib/window/IHappyDOMOptions.d.ts +15 -0
  36. package/lib/window/IHappyDOMOptions.js +3 -0
  37. package/lib/window/IHappyDOMOptions.js.map +1 -0
  38. package/lib/window/IHappyDOMSettings.d.ts +1 -0
  39. package/lib/window/IWindow.d.ts +13 -0
  40. package/lib/window/Window.d.ts +17 -7
  41. package/lib/window/Window.js +33 -0
  42. package/lib/window/Window.js.map +1 -1
  43. package/package.json +1 -1
  44. package/src/config/ElementTag.ts +2 -1
  45. package/src/config/NonImplemenetedElementClasses.ts +0 -1
  46. package/src/event/IMessagePort.ts +26 -0
  47. package/src/event/MessagePort.ts +33 -0
  48. package/src/event/events/IMessageEventInit.ts +11 -0
  49. package/src/event/events/MessageEvent.ts +32 -0
  50. package/src/index.ts +4 -0
  51. package/src/nodes/html-iframe-element/HTMLIFrameElement.ts +266 -0
  52. package/src/nodes/html-iframe-element/IFrameCrossOriginWindow.ts +60 -0
  53. package/src/nodes/html-iframe-element/IHTMLIFrameElement.ts +27 -0
  54. package/src/nodes/html-link-element/HTMLLinkElement.ts +2 -1
  55. package/src/nodes/html-script-element/HTMLScriptElement.ts +2 -2
  56. package/src/window/IHappyDOMOptions.ts +15 -0
  57. package/src/window/IHappyDOMSettings.ts +1 -0
  58. package/src/window/IWindow.ts +14 -0
  59. package/src/window/Window.ts +46 -7
@@ -53,6 +53,7 @@ const HTMLMediaElement_1 = __importDefault(require("../nodes/html-media-element/
53
53
  const HTMLAudioElement_1 = __importDefault(require("../nodes/html-audio-element/HTMLAudioElement"));
54
54
  const HTMLVideoElement_1 = __importDefault(require("../nodes/html-video-element/HTMLVideoElement"));
55
55
  const HTMLBaseElement_1 = __importDefault(require("../nodes/html-base-element/HTMLBaseElement"));
56
+ const HTMLIFrameElement_1 = __importDefault(require("../nodes/html-iframe-element/HTMLIFrameElement"));
56
57
  const HTMLDialogElement_1 = __importDefault(require("../nodes/html-dialog-element/HTMLDialogElement"));
57
58
  const SVGSVGElement_1 = __importDefault(require("../nodes/svg-element/SVGSVGElement"));
58
59
  const SVGElement_1 = __importDefault(require("../nodes/svg-element/SVGElement"));
@@ -67,9 +68,11 @@ const Event_1 = __importDefault(require("../event/Event"));
67
68
  const CustomEvent_1 = __importDefault(require("../event/events/CustomEvent"));
68
69
  const AnimationEvent_1 = __importDefault(require("../event/events/AnimationEvent"));
69
70
  const KeyboardEvent_1 = __importDefault(require("../event/events/KeyboardEvent"));
71
+ const MessageEvent_1 = __importDefault(require("../event/events/MessageEvent"));
70
72
  const ProgressEvent_1 = __importDefault(require("../event/events/ProgressEvent"));
71
73
  const MediaQueryListEvent_1 = __importDefault(require("../event/events/MediaQueryListEvent"));
72
74
  const EventTarget_1 = __importDefault(require("../event/EventTarget"));
75
+ const MessagePort_1 = __importDefault(require("../event/MessagePort"));
73
76
  const url_1 = require("url");
74
77
  const Location_1 = __importDefault(require("../location/Location"));
75
78
  const NonImplementedEventTypes_1 = __importDefault(require("../event/NonImplementedEventTypes"));
@@ -134,6 +137,7 @@ const Attr_1 = __importDefault(require("../nodes/attr/Attr"));
134
137
  const NamedNodeMap_1 = __importDefault(require("../named-node-map/NamedNodeMap"));
135
138
  const ProcessingInstruction_1 = __importDefault(require("../nodes/processing-instruction/ProcessingInstruction"));
136
139
  const FileList_1 = __importDefault(require("../nodes/html-input-element/FileList"));
140
+ const DOMExceptionNameEnum_1 = __importDefault(require("../exception/DOMExceptionNameEnum"));
137
141
  const ORIGINAL_SET_TIMEOUT = setTimeout;
138
142
  const ORIGINAL_CLEAR_TIMEOUT = clearTimeout;
139
143
  const ORIGINAL_SET_INTERVAL = setInterval;
@@ -191,6 +195,7 @@ class Window extends EventTarget_1.default {
191
195
  disableJavaScriptEvaluation: false,
192
196
  disableJavaScriptFileLoading: false,
193
197
  disableCSSFileLoading: false,
198
+ disableIframePageLoading: false,
194
199
  enableFileSystemHttpRequests: false
195
200
  }
196
201
  };
@@ -214,6 +219,7 @@ class Window extends EventTarget_1.default {
214
219
  this.HTMLAudioElement = HTMLAudioElement_1.default;
215
220
  this.HTMLVideoElement = HTMLVideoElement_1.default;
216
221
  this.HTMLBaseElement = HTMLBaseElement_1.default;
222
+ this.HTMLIFrameElement = HTMLIFrameElement_1.default;
217
223
  this.HTMLDialogElement = HTMLDialogElement_1.default;
218
224
  this.Attr = Attr_1.default;
219
225
  this.NamedNodeMap = NamedNodeMap_1.default;
@@ -239,6 +245,7 @@ class Window extends EventTarget_1.default {
239
245
  this.CustomEvent = CustomEvent_1.default;
240
246
  this.AnimationEvent = AnimationEvent_1.default;
241
247
  this.KeyboardEvent = KeyboardEvent_1.default;
248
+ this.MessageEvent = MessageEvent_1.default;
242
249
  this.MouseEvent = MouseEvent_1.default;
243
250
  this.PointerEvent = PointerEvent_1.default;
244
251
  this.FocusEvent = FocusEvent_1.default;
@@ -249,6 +256,7 @@ class Window extends EventTarget_1.default {
249
256
  this.ProgressEvent = ProgressEvent_1.default;
250
257
  this.MediaQueryListEvent = MediaQueryListEvent_1.default;
251
258
  this.EventTarget = EventTarget_1.default;
259
+ this.MessagePort = MessagePort_1.default;
252
260
  this.DataTransfer = DataTransfer_1.default;
253
261
  this.DataTransferItem = DataTransferItem_1.default;
254
262
  this.DataTransferItemList = DataTransferItemList_1.default;
@@ -601,6 +609,31 @@ class Window extends EventTarget_1.default {
601
609
  atob(data) {
602
610
  return Base64_1.default.atob(data);
603
611
  }
612
+ /**
613
+ * Safely enables cross-origin communication between Window objects; e.g., between a page and a pop-up that it spawned, or between a page and an iframe embedded within it.
614
+ *
615
+ * @param message Message.
616
+ * @param [targetOrigin=*] Target origin.
617
+ * @param _transfer Transfer. Not implemented.
618
+ */
619
+ postMessage(message, targetOrigin = '*', _transfer) {
620
+ // TODO: Implement transfer.
621
+ if (targetOrigin && targetOrigin !== '*' && this.location.origin !== targetOrigin) {
622
+ throw new DOMException_1.default(`Failed to execute 'postMessage' on 'Window': The target origin provided ('${targetOrigin}') does not match the recipient window\'s origin ('${this.location.origin}').`, DOMExceptionNameEnum_1.default.securityError);
623
+ }
624
+ try {
625
+ JSON.stringify(message);
626
+ }
627
+ catch (error) {
628
+ throw new DOMException_1.default(`Failed to execute 'postMessage' on 'Window': The provided message cannot be serialized.`, DOMExceptionNameEnum_1.default.invalidStateError);
629
+ }
630
+ this.dispatchEvent(new MessageEvent_1.default('message', {
631
+ data: message,
632
+ origin: this.parent.location.origin,
633
+ source: this.parent,
634
+ lastEventId: ''
635
+ }));
636
+ }
604
637
  /**
605
638
  * Setup of VM context.
606
639
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Window.js","sourceRoot":"","sources":["../../src/window/Window.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Window.js","sourceRoot":"","sources":["../../src/window/Window.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "happy-dom",
3
- "version": "8.6.0",
3
+ "version": "8.7.0",
4
4
  "license": "MIT",
5
5
  "homepage": "https://github.com/capricorn86/happy-dom",
6
6
  "repository": "https://github.com/capricorn86/happy-dom",
@@ -21,6 +21,7 @@ import HTMLButtonElement from '../nodes/html-button-element/HTMLButtonElement';
21
21
  import HTMLAudioElement from '../nodes/html-audio-element/HTMLAudioElement';
22
22
  import HTMLVideoElement from '../nodes/html-video-element/HTMLVideoElement';
23
23
  import HTMLAnchorElement from '../nodes/html-anchor-element/HTMLAnchorElement';
24
+ import HTMLIFrameElement from '../nodes/html-iframe-element/HTMLIFrameElement';
24
25
 
25
26
  export default {
26
27
  A: HTMLAnchorElement,
@@ -94,7 +95,7 @@ export default {
94
95
  HR: HTMLElement,
95
96
  HTML: HTMLElement,
96
97
  I: HTMLElement,
97
- IFRAME: HTMLElement,
98
+ IFRAME: HTMLIFrameElement,
98
99
  INS: HTMLElement,
99
100
  KBD: HTMLElement,
100
101
  LEGEND: HTMLElement,
@@ -45,7 +45,6 @@ export default [
45
45
  'HTMLTableSectionElement',
46
46
  'HTMLFrameElement',
47
47
  'HTMLFrameSetElement',
48
- 'HTMLIFrameElement',
49
48
  'HTMLEmbedElement',
50
49
  'HTMLObjectElement',
51
50
  'HTMLParamElement',
@@ -0,0 +1,26 @@
1
+ import IEventTarget from './IEventTarget';
2
+
3
+ /**
4
+ * Message port.
5
+ *
6
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/MessagePort
7
+ */
8
+ export default interface IMessagePort extends IEventTarget {
9
+ /**
10
+ * Sends a message from the port, and optionally, transfers ownership of objects to other browsing contexts.
11
+ *
12
+ * @param type Event type.
13
+ * @param listener Listener.
14
+ */
15
+ postMessage(message: unknown, transerList: unknown[]): void;
16
+
17
+ /**
18
+ * Starts the sending of messages queued on the port.
19
+ */
20
+ start(): void;
21
+
22
+ /**
23
+ * Disconnects the port, so it is no longer active. This stops the flow of messages to that port.
24
+ */
25
+ close(): void;
26
+ }
@@ -0,0 +1,33 @@
1
+ import EventTarget from './EventTarget';
2
+ import IMessagePort from './IMessagePort';
3
+
4
+ /**
5
+ * Message port.
6
+ *
7
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/MessagePort
8
+ */
9
+ export default abstract class MessagePort extends EventTarget implements IMessagePort {
10
+ /**
11
+ * Sends a message from the port, and optionally, transfers ownership of objects to other browsing contexts.
12
+ *
13
+ * @param _message Message.
14
+ * @param _transerList Transfer list.
15
+ */
16
+ public postMessage(_message: unknown, _transerList: unknown[]): void {
17
+ // TODO: Implement
18
+ }
19
+
20
+ /**
21
+ * Starts the sending of messages queued on the port.
22
+ */
23
+ public start(): void {
24
+ // TODO: Implement
25
+ }
26
+
27
+ /**
28
+ * Disconnects the port, so it is no longer active. This stops the flow of messages to that port.
29
+ */
30
+ public close(): void {
31
+ // TODO: Implement
32
+ }
33
+ }
@@ -0,0 +1,11 @@
1
+ import IEventInit from '../IEventInit';
2
+ import IWindow from '../../window/IWindow';
3
+ import IMessagePort from '../IMessagePort';
4
+
5
+ export default interface IMessageEventInit extends IEventInit {
6
+ data?: unknown | null;
7
+ origin?: string;
8
+ lastEventId?: string;
9
+ source?: IWindow | null;
10
+ ports?: IMessagePort[];
11
+ }
@@ -0,0 +1,32 @@
1
+ import IWindow from '../../window/IWindow';
2
+ import Event from '../Event';
3
+ import IMessagePort from '../IMessagePort';
4
+ import IMessageEventInit from './IMessageEventInit';
5
+
6
+ /**
7
+ * Message event.
8
+ *
9
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent
10
+ */
11
+ export default class MessageEvent extends Event {
12
+ public data?: unknown | null = null;
13
+ public origin?: string = '';
14
+ public lastEventId?: string = '';
15
+ public source?: IWindow | null = null;
16
+ public ports?: IMessagePort[] = [];
17
+
18
+ /**
19
+ * Constructor.
20
+ *
21
+ * @param type Event type.
22
+ * @param [eventInit] Event init.
23
+ */
24
+ constructor(type: string, eventInit?: IMessageEventInit) {
25
+ super(type, eventInit);
26
+ this.data = eventInit?.data !== undefined ? eventInit.data : null;
27
+ this.origin = eventInit?.origin || '';
28
+ this.lastEventId = eventInit?.lastEventId || '';
29
+ this.source = eventInit?.source || null;
30
+ this.ports = eventInit?.ports || [];
31
+ }
32
+ }
package/src/index.ts CHANGED
@@ -82,6 +82,8 @@ import HTMLVideoElement from './nodes/html-video-element/HTMLVideoElement';
82
82
  import IHTMLVideoElement from './nodes/html-video-element/IHTMLVideoElement';
83
83
  import HTMLBaseElement from './nodes/html-base-element/HTMLBaseElement';
84
84
  import IHTMLBaseElement from './nodes/html-base-element/IHTMLBaseElement';
85
+ import HTMLIFrameElement from './nodes/html-iframe-element/HTMLIFrameElement';
86
+ import IHTMLIFrameElement from './nodes/html-iframe-element/IHTMLIFrameElement';
85
87
  import SVGElement from './nodes/svg-element/SVGElement';
86
88
  import ISVGElement from './nodes/svg-element/ISVGElement';
87
89
  import SVGGraphicsElement from './nodes/svg-element/SVGGraphicsElement';
@@ -211,6 +213,8 @@ export {
211
213
  IHTMLVideoElement,
212
214
  HTMLBaseElement,
213
215
  IHTMLBaseElement,
216
+ HTMLIFrameElement,
217
+ IHTMLIFrameElement,
214
218
  SVGElement,
215
219
  ISVGElement,
216
220
  SVGGraphicsElement,
@@ -0,0 +1,266 @@
1
+ import { URL } from 'url';
2
+ import Event from '../../event/Event';
3
+ import ErrorEvent from '../../event/events/ErrorEvent';
4
+ import IWindow from '../../window/IWindow';
5
+ import Window from '../../window/Window';
6
+ import IDocument from '../document/IDocument';
7
+ import HTMLElement from '../html-element/HTMLElement';
8
+ import INode from '../node/INode';
9
+ import IFrameCrossOriginWindow from './IFrameCrossOriginWindow';
10
+ import IHTMLIFrameElement from './IHTMLIFrameElement';
11
+
12
+ /**
13
+ * HTML Iframe Element.
14
+ *
15
+ * Reference:
16
+ * https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.
17
+ */
18
+ export default class HTMLIFrameElement extends HTMLElement implements IHTMLIFrameElement {
19
+ // Events
20
+ public onload: (event: Event) => void | null = null;
21
+ public onerror: (event: Event) => void | null = null;
22
+
23
+ // Private
24
+ #contentWindow: IWindow | IFrameCrossOriginWindow | null = null;
25
+
26
+ /**
27
+ * Returns source.
28
+ *
29
+ * @returns Source.
30
+ */
31
+ public get src(): string {
32
+ return this.getAttribute('src') || '';
33
+ }
34
+
35
+ /**
36
+ * Sets source.
37
+ *
38
+ * @param src Source.
39
+ */
40
+ public set src(src: string) {
41
+ this.setAttribute('src', src);
42
+ }
43
+
44
+ /**
45
+ * Returns allow.
46
+ *
47
+ * @returns Allow.
48
+ */
49
+ public get allow(): string {
50
+ return this.getAttribute('allow') || '';
51
+ }
52
+
53
+ /**
54
+ * Sets allow.
55
+ *
56
+ * @param allow Allow.
57
+ */
58
+ public set allow(allow: string) {
59
+ this.setAttribute('allow', allow);
60
+ }
61
+
62
+ /**
63
+ * Returns height.
64
+ *
65
+ * @returns Height.
66
+ */
67
+ public get height(): string {
68
+ return this.getAttribute('height') || '';
69
+ }
70
+
71
+ /**
72
+ * Sets height.
73
+ *
74
+ * @param height Height.
75
+ */
76
+ public set height(height: string) {
77
+ this.setAttribute('height', height);
78
+ }
79
+
80
+ /**
81
+ * Returns width.
82
+ *
83
+ * @returns Width.
84
+ */
85
+ public get width(): string {
86
+ return this.getAttribute('width') || '';
87
+ }
88
+
89
+ /**
90
+ * Sets width.
91
+ *
92
+ * @param width Width.
93
+ */
94
+ public set width(width: string) {
95
+ this.setAttribute('width', width);
96
+ }
97
+
98
+ /**
99
+ * Returns name.
100
+ *
101
+ * @returns Name.
102
+ */
103
+ public get name(): string {
104
+ return this.getAttribute('name') || '';
105
+ }
106
+
107
+ /**
108
+ * Sets name.
109
+ *
110
+ * @param name Name.
111
+ */
112
+ public set name(name: string) {
113
+ this.setAttribute('name', name);
114
+ }
115
+
116
+ /**
117
+ * Returns sandbox.
118
+ *
119
+ * @returns Sandbox.
120
+ */
121
+ public get sandbox(): string {
122
+ return this.getAttribute('sandbox') || '';
123
+ }
124
+
125
+ /**
126
+ * Sets sandbox.
127
+ *
128
+ * @param sandbox Sandbox.
129
+ */
130
+ public set sandbox(sandbox: string) {
131
+ this.setAttribute('sandbox', sandbox);
132
+ }
133
+
134
+ /**
135
+ * Returns srcdoc.
136
+ *
137
+ * @returns Srcdoc.
138
+ */
139
+ public get srcdoc(): string {
140
+ return this.getAttribute('srcdoc') || '';
141
+ }
142
+
143
+ /**
144
+ * Sets sandbox.
145
+ *
146
+ * @param srcdoc Srcdoc.
147
+ */
148
+ public set srcdoc(srcdoc: string) {
149
+ this.setAttribute('srcdoc', srcdoc);
150
+ }
151
+
152
+ /**
153
+ * Returns content document.
154
+ *
155
+ * @returns Content document.
156
+ */
157
+ public get contentDocument(): IDocument | null {
158
+ return (<IWindow>this.#contentWindow)?.document || null;
159
+ }
160
+
161
+ /**
162
+ * Returns content window.
163
+ *
164
+ * @returns Content window.
165
+ */
166
+ public get contentWindow(): IWindow | IFrameCrossOriginWindow | null {
167
+ return this.#contentWindow || null;
168
+ }
169
+
170
+ /**
171
+ * @override
172
+ */
173
+ public override _connectToNode(parentNode: INode = null): void {
174
+ const isConnected = this.isConnected;
175
+ const isParentConnected = parentNode ? parentNode.isConnected : false;
176
+
177
+ super._connectToNode(parentNode);
178
+
179
+ if (
180
+ isParentConnected &&
181
+ isConnected !== isParentConnected &&
182
+ !this.ownerDocument.defaultView.happyDOM.settings.disableIframePageLoading
183
+ ) {
184
+ const src = this.src;
185
+
186
+ if (src !== null) {
187
+ const contentWindow = new (<typeof Window>this.ownerDocument.defaultView.constructor)({
188
+ url: src,
189
+ settings: {
190
+ ...this.ownerDocument.defaultView.happyDOM.settings
191
+ }
192
+ });
193
+
194
+ (<IWindow>contentWindow.parent) = this.ownerDocument.defaultView;
195
+ (<IWindow>contentWindow.top) = this.ownerDocument.defaultView;
196
+
197
+ if (src === 'about:blank') {
198
+ this.#contentWindow = contentWindow;
199
+ return;
200
+ }
201
+
202
+ if (src.startsWith('javascript:')) {
203
+ this.#contentWindow = contentWindow;
204
+ this.#contentWindow.eval(src.replace('javascript:', ''));
205
+ return;
206
+ }
207
+
208
+ const originURL = this.ownerDocument.defaultView.location;
209
+ const targetURL = new URL(src, originURL);
210
+ const isCORS =
211
+ (originURL.hostname !== targetURL.hostname &&
212
+ !originURL.hostname.endsWith(targetURL.hostname)) ||
213
+ originURL.protocol !== targetURL.protocol;
214
+
215
+ const onError = (error): void => {
216
+ this.dispatchEvent(
217
+ new ErrorEvent('error', {
218
+ message: error.message,
219
+ error
220
+ })
221
+ );
222
+ this.ownerDocument.defaultView.dispatchEvent(
223
+ new ErrorEvent('error', {
224
+ message: error.message,
225
+ error
226
+ })
227
+ );
228
+ if (
229
+ !this['_listeners']['error'] &&
230
+ !this.ownerDocument.defaultView['_listeners']['error']
231
+ ) {
232
+ this.ownerDocument.defaultView.console.error(error);
233
+ }
234
+ };
235
+
236
+ this.#contentWindow = null;
237
+ this.ownerDocument.defaultView
238
+ .fetch(src)
239
+ .then((response) => {
240
+ response
241
+ .text()
242
+ .then((text) => {
243
+ this.#contentWindow = isCORS
244
+ ? new IFrameCrossOriginWindow(this.ownerDocument.defaultView, contentWindow)
245
+ : contentWindow;
246
+ contentWindow.document.write(text);
247
+ this.dispatchEvent(new Event('load'));
248
+ })
249
+ .catch(onError);
250
+ })
251
+ .catch(onError);
252
+ }
253
+ }
254
+ }
255
+
256
+ /**
257
+ * Clones a node.
258
+ *
259
+ * @override
260
+ * @param [deep=false] "true" to clone deep.
261
+ * @returns Cloned node.
262
+ */
263
+ public cloneNode(deep = false): IHTMLIFrameElement {
264
+ return <IHTMLIFrameElement>super.cloneNode(deep);
265
+ }
266
+ }
@@ -0,0 +1,60 @@
1
+ import EventTarget from '../../event/EventTarget';
2
+ import IWindow from '../../window/IWindow';
3
+ import DOMException from '../../exception/DOMException';
4
+ import DOMExceptionNameEnum from '../../exception/DOMExceptionNameEnum';
5
+ import Location from '../../location/Location';
6
+
7
+ /**
8
+ * Browser window with limited access due to CORS restrictions in iframes.
9
+ */
10
+ export default class IFrameCrossOriginWindow extends EventTarget {
11
+ public readonly self = this;
12
+ public readonly window = this;
13
+ public readonly parent: IWindow;
14
+ public readonly top: IWindow;
15
+ public readonly location: Location;
16
+
17
+ private _targetWindow: IWindow;
18
+
19
+ /**
20
+ * Constructor.
21
+ *
22
+ * @param parent Parent window.
23
+ * @param target Target window.
24
+ */
25
+ constructor(parent: IWindow, target: IWindow) {
26
+ super();
27
+
28
+ this.parent = parent;
29
+ this.top = parent;
30
+ this.location = <Location>new Proxy(
31
+ {},
32
+ {
33
+ get: () => {
34
+ throw new DOMException(
35
+ `Blocked a frame with origin "${this.parent.location.origin}" from accessing a cross-origin frame.`,
36
+ DOMExceptionNameEnum.securityError
37
+ );
38
+ },
39
+ set: () => {
40
+ throw new DOMException(
41
+ `Blocked a frame with origin "${this.parent.location.origin}" from accessing a cross-origin frame.`,
42
+ DOMExceptionNameEnum.securityError
43
+ );
44
+ }
45
+ }
46
+ );
47
+ this._targetWindow = target;
48
+ }
49
+
50
+ /**
51
+ * Safely enables cross-origin communication between Window objects; e.g., between a page and a pop-up that it spawned, or between a page and an iframe embedded within it.
52
+ *
53
+ * @param message Message.
54
+ * @param [targetOrigin=*] Target origin.
55
+ * @param transfer Transfer. Not implemented.
56
+ */
57
+ public postMessage(message: unknown, targetOrigin = '*', transfer?: unknown[]): void {
58
+ this._targetWindow.postMessage(message, targetOrigin, transfer);
59
+ }
60
+ }
@@ -0,0 +1,27 @@
1
+ import Event from '../../event/Event';
2
+ import IWindow from '../../window/IWindow';
3
+ import IDocument from '../document/IDocument';
4
+ import IHTMLElement from '../html-element/IHTMLElement';
5
+ import IFrameCrossOriginWindow from './IFrameCrossOriginWindow';
6
+
7
+ /**
8
+ * HTML Iframe Element.
9
+ *
10
+ * Reference:
11
+ * https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.
12
+ */
13
+ export default interface IHTMLIFrameElement extends IHTMLElement {
14
+ src: string | null;
15
+ allow: string | null;
16
+ height: string | null;
17
+ width: string | null;
18
+ name: string | null;
19
+ sandbox: string | null;
20
+ srcdoc: string | null;
21
+ readonly contentDocument: IDocument | null;
22
+ readonly contentWindow: IWindow | IFrameCrossOriginWindow | null;
23
+
24
+ // Events
25
+ onload: (event: Event) => void | null;
26
+ onerror: (event: Event) => void | null;
27
+ }
@@ -250,13 +250,14 @@ export default class HTMLLinkElement extends HTMLElement implements IHTMLLinkEle
250
250
  /**
251
251
  * @override
252
252
  */
253
- public _connectToNode(parentNode: INode = null): void {
253
+ public override _connectToNode(parentNode: INode = null): void {
254
254
  const isConnected = this.isConnected;
255
255
  const isParentConnected = parentNode ? parentNode.isConnected : false;
256
256
 
257
257
  super._connectToNode(parentNode);
258
258
 
259
259
  if (
260
+ isParentConnected &&
260
261
  isConnected !== isParentConnected &&
261
262
  this._evaluateCSS &&
262
263
  !this.ownerDocument.defaultView.happyDOM.settings.disableCSSFileLoading