From 35d95239fad1d07d06c71e177f752da461741bcf Mon Sep 17 00:00:00 2001 From: Dan Abramov Date: Fri, 5 Jan 2018 17:21:33 +0000 Subject: [PATCH] Remove IE8 event.target polyfill via srcElement (#11515) --- .../__tests__/SyntheticClipboardEvent-test.js | 62 ---------------- .../events/__tests__/SyntheticEvent-test.js | 27 ------- .../__tests__/SyntheticKeyboardEvent-test.js | 70 ------------------- .../__tests__/SyntheticWheelEvent-test.js | 27 ------- .../react-dom/src/events/getEventTarget.js | 2 +- 5 files changed, 1 insertion(+), 187 deletions(-) diff --git a/packages/react-dom/src/events/__tests__/SyntheticClipboardEvent-test.js b/packages/react-dom/src/events/__tests__/SyntheticClipboardEvent-test.js index 5213973ddd7fb..7be3695277aba 100644 --- a/packages/react-dom/src/events/__tests__/SyntheticClipboardEvent-test.js +++ b/packages/react-dom/src/events/__tests__/SyntheticClipboardEvent-test.js @@ -79,68 +79,6 @@ describe('SyntheticClipboardEvent', () => { }); describe('EventInterface', () => { - it('normalizes properties from the Event interface', () => { - let expectedCount = 0; - let div; - - const eventHandler = type => event => { - expect(event.target).toBe(div); - expect(event.type).toBe(type); - expectedCount++; - }; - - div = ReactDOM.render( -
, - container, - ); - - let event; - event = document.createEvent('Event'); - event.initEvent('copy', true, true); - // Emulate IE8 - Object.defineProperty(event, 'target', { - get() {}, - }); - Object.defineProperty(event, 'srcElement', { - get() { - return div; - }, - }); - div.dispatchEvent(event); - - event = document.createEvent('Event'); - event.initEvent('cut', true, true); - // Emulate IE8 - Object.defineProperty(event, 'target', { - get() {}, - }); - Object.defineProperty(event, 'srcElement', { - get() { - return div; - }, - }); - div.dispatchEvent(event); - - event = document.createEvent('Event'); - event.initEvent('paste', true, true); - // Emulate IE8 - Object.defineProperty(event, 'target', { - get() {}, - }); - Object.defineProperty(event, 'srcElement', { - get() { - return div; - }, - }); - div.dispatchEvent(event); - - expect(expectedCount).toBe(3); - }); - it('is able to `preventDefault` and `stopPropagation`', () => { let expectedCount = 0; diff --git a/packages/react-dom/src/events/__tests__/SyntheticEvent-test.js b/packages/react-dom/src/events/__tests__/SyntheticEvent-test.js index 10420f1f9c7a0..c0609e5fe2234 100644 --- a/packages/react-dom/src/events/__tests__/SyntheticEvent-test.js +++ b/packages/react-dom/src/events/__tests__/SyntheticEvent-test.js @@ -30,33 +30,6 @@ describe('SyntheticEvent', () => { container = null; }); - it('should normalize `target` from the nativeEvent', () => { - let node; - let expectedCount = 0; - - const eventHandler = syntheticEvent => { - expect(syntheticEvent.target).toBe(node); - - expectedCount++; - }; - node = ReactDOM.render(
, container); - - const event = document.createEvent('Event'); - event.initEvent('click', true, true); - // Emulate IE8 - Object.defineProperty(event, 'target', { - get() {}, - }); - Object.defineProperty(event, 'srcElement', { - get() { - return node; - }, - }); - node.dispatchEvent(event); - - expect(expectedCount).toBe(1); - }); - it('should be able to `preventDefault`', () => { let node; let expectedCount = 0; diff --git a/packages/react-dom/src/events/__tests__/SyntheticKeyboardEvent-test.js b/packages/react-dom/src/events/__tests__/SyntheticKeyboardEvent-test.js index 16fd4d757e28b..4614f782ccc49 100644 --- a/packages/react-dom/src/events/__tests__/SyntheticKeyboardEvent-test.js +++ b/packages/react-dom/src/events/__tests__/SyntheticKeyboardEvent-test.js @@ -454,76 +454,6 @@ describe('SyntheticKeyboardEvent', () => { }); describe('EventInterface', () => { - it('normalizes properties from the Event interface', () => { - let expectedCount = 0; - let div; - const eventHandler = type => event => { - expect(event.target).toBe(div); - expect(event.type).toBe(type); - expectedCount++; - }; - div = ReactDOM.render( -
, - container, - ); - - let event; - event = new KeyboardEvent('keydown', { - keyCode: 40, - bubbles: true, - cancelable: true, - }); - // Emulate IE8 - Object.defineProperty(event, 'target', { - get() {}, - }); - Object.defineProperty(event, 'srcElement', { - get() { - return div; - }, - }); - div.dispatchEvent(event); - - event = new KeyboardEvent('keyup', { - keyCode: 40, - bubbles: true, - cancelable: true, - }); - // Emulate IE8 - Object.defineProperty(event, 'target', { - get() {}, - }); - Object.defineProperty(event, 'srcElement', { - get() { - return div; - }, - }); - div.dispatchEvent(event); - - event = new KeyboardEvent('keypress', { - charCode: 40, - keyCode: 40, - bubbles: true, - cancelable: true, - }); - // Emulate IE8 - Object.defineProperty(event, 'target', { - get() {}, - }); - Object.defineProperty(event, 'srcElement', { - get() { - return div; - }, - }); - div.dispatchEvent(event); - - expect(expectedCount).toBe(3); - }); - it('is able to `preventDefault` and `stopPropagation`', () => { let expectedCount = 0; const eventHandler = event => { diff --git a/packages/react-dom/src/events/__tests__/SyntheticWheelEvent-test.js b/packages/react-dom/src/events/__tests__/SyntheticWheelEvent-test.js index 58979fbf9e7d8..0bcc32f4c1044 100644 --- a/packages/react-dom/src/events/__tests__/SyntheticWheelEvent-test.js +++ b/packages/react-dom/src/events/__tests__/SyntheticWheelEvent-test.js @@ -29,33 +29,6 @@ describe('SyntheticWheelEvent', () => { container = null; }); - it('should normalize properties from the Event interface', () => { - const events = []; - const onWheel = event => { - event.persist(); - events.push(event); - }; - ReactDOM.render(
, container); - - const event = new MouseEvent('wheel', { - bubbles: true, - }); - // Emulate IE8 - Object.defineProperty(event, 'target', { - get() {}, - }); - Object.defineProperty(event, 'srcElement', { - get() { - return container.firstChild; - }, - }); - container.firstChild.dispatchEvent(event); - - expect(events.length).toBe(1); - expect(events[0].target).toBe(container.firstChild); - expect(events[0].type).toBe('wheel'); - }); - it('should normalize properties from the MouseEvent interface', () => { const events = []; const onWheel = event => { diff --git a/packages/react-dom/src/events/getEventTarget.js b/packages/react-dom/src/events/getEventTarget.js index 028c184602477..76c0052c8520c 100644 --- a/packages/react-dom/src/events/getEventTarget.js +++ b/packages/react-dom/src/events/getEventTarget.js @@ -15,7 +15,7 @@ import {TEXT_NODE} from '../shared/HTMLNodeType'; * @return {DOMEventTarget} Target node. */ function getEventTarget(nativeEvent) { - let target = nativeEvent.target || nativeEvent.srcElement || window; + let target = nativeEvent.target || window; // Normalize SVG element events #4963 if (target.correspondingUseElement) {