Skip to content

Commit 4bf88dd

Browse files
cherniavskiiphilipp-spiess
authored andcommitted
Fix <embed> not triggering onLoad (#15614)
1 parent f961050 commit 4bf88dd

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

packages/react-dom/src/__tests__/ReactDOMEventListener-test.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -446,4 +446,31 @@ describe('ReactDOMEventListener', () => {
446446
document.body.removeChild(container);
447447
}
448448
});
449+
450+
it('should dispatch load for embed elements', () => {
451+
const container = document.createElement('div');
452+
document.body.appendChild(container);
453+
454+
try {
455+
const ref = React.createRef();
456+
const handleLoad = jest.fn();
457+
458+
ReactDOM.render(
459+
<div>
460+
<embed ref={ref} onLoad={handleLoad} />
461+
</div>,
462+
container,
463+
);
464+
465+
ref.current.dispatchEvent(
466+
new ProgressEvent('load', {
467+
bubbles: false,
468+
}),
469+
);
470+
471+
expect(handleLoad).toHaveBeenCalledTimes(1);
472+
} finally {
473+
document.body.removeChild(container);
474+
}
475+
});
449476
});

packages/react-dom/src/client/ReactDOMComponent.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -522,6 +522,7 @@ export function setInitialProperties(
522522
switch (tag) {
523523
case 'iframe':
524524
case 'object':
525+
case 'embed':
525526
trapBubbledEvent(TOP_LOAD, domElement);
526527
props = rawProps;
527528
break;
@@ -916,6 +917,7 @@ export function diffHydratedProperties(
916917
switch (tag) {
917918
case 'iframe':
918919
case 'object':
920+
case 'embed':
919921
trapBubbledEvent(TOP_LOAD, domElement);
920922
break;
921923
case 'video':

0 commit comments

Comments
 (0)