From 71a6a9189f82bdb142f601be65365448a1c4ea3b Mon Sep 17 00:00:00 2001 From: Andrew Cherniavskii Date: Fri, 10 May 2019 14:22:48 +0200 Subject: [PATCH 1/2] make trigger onLoad --- packages/react-dom/src/client/ReactDOMComponent.js | 2 ++ 1 file changed, 2 insertions(+) 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': From 8858f4e9734af73ca086c0a4138f58ff97887466 Mon Sep 17 00:00:00 2001 From: Andrew Cherniavskii Date: Fri, 10 May 2019 19:54:42 +0200 Subject: [PATCH 2/2] add unit test --- .../__tests__/ReactDOMEventListener-test.js | 27 +++++++++++++++++++ 1 file changed, 27 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); + } + }); });