From 4bf88ddeca37d5971c05a9ab720f898409c143fd Mon Sep 17 00:00:00 2001 From: Andrew Cherniavskii Date: Thu, 16 May 2019 11:05:20 +0200 Subject: [PATCH] Fix not triggering onLoad (#15614) --- .../__tests__/ReactDOMEventListener-test.js | 27 +++++++++++++++++++ .../react-dom/src/client/ReactDOMComponent.js | 2 ++ 2 files changed, 29 insertions(+) diff --git a/packages/react-dom/src/__tests__/ReactDOMEventListener-test.js b/packages/react-dom/src/__tests__/ReactDOMEventListener-test.js index 26ee3498f1f9..a1cd76874beb 100644 --- a/packages/react-dom/src/__tests__/ReactDOMEventListener-test.js +++ b/packages/react-dom/src/__tests__/ReactDOMEventListener-test.js @@ -446,4 +446,31 @@ describe('ReactDOMEventListener', () => { document.body.removeChild(container); } }); + + it('should dispatch load for embed elements', () => { + const container = document.createElement('div'); + document.body.appendChild(container); + + try { + const ref = React.createRef(); + const handleLoad = jest.fn(); + + ReactDOM.render( +
+ +
, + container, + ); + + ref.current.dispatchEvent( + new ProgressEvent('load', { + bubbles: false, + }), + ); + + expect(handleLoad).toHaveBeenCalledTimes(1); + } finally { + document.body.removeChild(container); + } + }); }); diff --git a/packages/react-dom/src/client/ReactDOMComponent.js b/packages/react-dom/src/client/ReactDOMComponent.js index f53db133c79e..33886140fd5c 100644 --- a/packages/react-dom/src/client/ReactDOMComponent.js +++ b/packages/react-dom/src/client/ReactDOMComponent.js @@ -522,6 +522,7 @@ export function setInitialProperties( switch (tag) { case 'iframe': case 'object': + case 'embed': trapBubbledEvent(TOP_LOAD, domElement); props = rawProps; break; @@ -916,6 +917,7 @@ export function diffHydratedProperties( switch (tag) { case 'iframe': case 'object': + case 'embed': trapBubbledEvent(TOP_LOAD, domElement); break; case 'video':