From 043c2494588eded6384eb56e7d806a49e844965c Mon Sep 17 00:00:00 2001 From: Nathan Hunzaker Date: Sun, 31 Jul 2016 16:59:51 -0400 Subject: [PATCH] Avoid "Member not found exception" in IE10 (#7343) 'change' custom events raise "Member not found" in <= IE10. To circumvent this, the SyntheticEvent class now checks for "typeof event.cancelBubble !== 'unknown'". This eliminates this exception and maintains the expected bubbling functionality. Addresses #7320. (cherry picked from commit 2823dfcbfbf1602086a5cc64aea1c9859f67c38c) --- .../dom/client/syntheticEvents/SyntheticEvent.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/renderers/dom/client/syntheticEvents/SyntheticEvent.js b/src/renderers/dom/client/syntheticEvents/SyntheticEvent.js index bf344599530b2..1b01eebd91cfd 100644 --- a/src/renderers/dom/client/syntheticEvents/SyntheticEvent.js +++ b/src/renderers/dom/client/syntheticEvents/SyntheticEvent.js @@ -135,9 +135,15 @@ Object.assign(SyntheticEvent.prototype, { if (event.stopPropagation) { event.stopPropagation(); - } else { + } else if (typeof event.cancelBubble !== 'unknown') { // eslint-disable-line valid-typeof + // The ChangeEventPlugin registers a "propertychange" event for + // IE. This event does not support bubbling or cancelling, and + // any references to cancelBubble throw "Member not found". A + // typeof check of "unknown" circumvents this issue (and is also + // IE specific). event.cancelBubble = true; } + this.isPropagationStopped = emptyFunction.thatReturnsTrue; },