From 9871f37bd5550ec44c743db546c0ae968ad3e8a2 Mon Sep 17 00:00:00 2001 From: Thaddeus Jiang Date: Fri, 8 Jun 2018 11:28:41 +0900 Subject: [PATCH 1/4] revert #11800 because #12763 --- packages/react-dom/src/client/ReactInputSelection.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/react-dom/src/client/ReactInputSelection.js b/packages/react-dom/src/client/ReactInputSelection.js index d4b47b992ce8..77a3e66b3dea 100644 --- a/packages/react-dom/src/client/ReactInputSelection.js +++ b/packages/react-dom/src/client/ReactInputSelection.js @@ -6,6 +6,7 @@ */ import containsNode from 'fbjs/lib/containsNode'; +import focusNode from 'fbjs/lib/focusNode'; import getActiveElement from 'fbjs/lib/getActiveElement'; import * as ReactDOMSelection from './ReactDOMSelection'; @@ -82,7 +83,7 @@ export function restoreSelection(priorSelectionInformation) { } } - priorFocusedElem.focus(); + focusNode(priorFocusedElem); for (let i = 0; i < ancestors.length; i++) { const info = ancestors[i]; From f5abb780d46b2ac64756d16caa78054eb20a2332 Mon Sep 17 00:00:00 2001 From: Thaddeus Jiang Date: Mon, 11 Jun 2018 08:37:22 +0900 Subject: [PATCH 2/4] use try/catch for SVG in IE11 --- packages/react-dom/src/client/ReactInputSelection.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/react-dom/src/client/ReactInputSelection.js b/packages/react-dom/src/client/ReactInputSelection.js index 77a3e66b3dea..4ad9797f559d 100644 --- a/packages/react-dom/src/client/ReactInputSelection.js +++ b/packages/react-dom/src/client/ReactInputSelection.js @@ -83,7 +83,12 @@ export function restoreSelection(priorSelectionInformation) { } } - focusNode(priorFocusedElem); + try { + priorFocusedElem.focus(); + } catch (e) { + // The SVGElement don't have a focus method in IE11 + focusNode(priorFocusedElem); + } for (let i = 0; i < ancestors.length; i++) { const info = ancestors[i]; From 18f6b9dbfa7f0fe8d908d87aff47e9a3523533ad Mon Sep 17 00:00:00 2001 From: Thaddeus Jiang Date: Mon, 11 Jun 2018 08:50:45 +0900 Subject: [PATCH 3/4] use focusNode(element) when element.focus isn't a function. --- packages/react-dom/src/client/ReactInputSelection.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/react-dom/src/client/ReactInputSelection.js b/packages/react-dom/src/client/ReactInputSelection.js index 4ad9797f559d..8e006b8be9be 100644 --- a/packages/react-dom/src/client/ReactInputSelection.js +++ b/packages/react-dom/src/client/ReactInputSelection.js @@ -83,9 +83,9 @@ export function restoreSelection(priorSelectionInformation) { } } - try { + if (typeof priorFocusedElem.focus === 'function') { priorFocusedElem.focus(); - } catch (e) { + } else { // The SVGElement don't have a focus method in IE11 focusNode(priorFocusedElem); } From c6f82048215ec9b0cb6e2b39c459a7ab7a866a98 Mon Sep 17 00:00:00 2001 From: Thaddeus Jiang Date: Mon, 11 Jun 2018 09:56:51 +0900 Subject: [PATCH 4/4] revert #11800 --- packages/react-dom/src/client/ReactInputSelection.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/react-dom/src/client/ReactInputSelection.js b/packages/react-dom/src/client/ReactInputSelection.js index 8e006b8be9be..3eda61571044 100644 --- a/packages/react-dom/src/client/ReactInputSelection.js +++ b/packages/react-dom/src/client/ReactInputSelection.js @@ -6,7 +6,6 @@ */ import containsNode from 'fbjs/lib/containsNode'; -import focusNode from 'fbjs/lib/focusNode'; import getActiveElement from 'fbjs/lib/getActiveElement'; import * as ReactDOMSelection from './ReactDOMSelection'; @@ -85,9 +84,6 @@ export function restoreSelection(priorSelectionInformation) { if (typeof priorFocusedElem.focus === 'function') { priorFocusedElem.focus(); - } else { - // The SVGElement don't have a focus method in IE11 - focusNode(priorFocusedElem); } for (let i = 0; i < ancestors.length; i++) {