diff --git a/src/renderers/dom/shared/ReactDOMSelection.js b/src/renderers/dom/shared/ReactDOMSelection.js index 3cd88c00e7..4aaa9e86dd 100644 --- a/src/renderers/dom/shared/ReactDOMSelection.js +++ b/src/renderers/dom/shared/ReactDOMSelection.js @@ -11,8 +11,6 @@ 'use strict'; -var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment'); - var getNodeForCharacterOffset = require('getNodeForCharacterOffset'); var getTextContentAccessor = require('getTextContentAccessor'); @@ -25,39 +23,6 @@ function isCollapsed(anchorNode, anchorOffset, focusNode, focusOffset) { return anchorNode === focusNode && anchorOffset === focusOffset; } -/** - * Get the appropriate anchor and focus node/offset pairs for IE. - * - * The catch here is that IE's selection API doesn't provide information - * about whether the selection is forward or backward, so we have to - * behave as though it's always forward. - * - * IE text differs from modern selection in that it behaves as though - * block elements end with a new line. This means character offsets will - * differ between the two APIs. - * - * @param {DOMElement} node - * @return {object} - */ -function getIEOffsets(node) { - var selection = document.selection; - var selectedRange = selection.createRange(); - var selectedLength = selectedRange.text.length; - - // Duplicate selection so we can move range without breaking user selection. - var fromStart = selectedRange.duplicate(); - fromStart.moveToElementText(node); - fromStart.setEndPoint('EndToStart', selectedRange); - - var startOffset = fromStart.text.length; - var endOffset = startOffset + selectedLength; - - return { - start: startOffset, - end: endOffset, - }; -} - /** * @param {DOMElement} node * @return {?object} @@ -130,32 +95,6 @@ function getModernOffsets(node) { }; } -/** - * @param {DOMElement|DOMTextNode} node - * @param {object} offsets - */ -function setIEOffsets(node, offsets) { - var range = document.selection.createRange().duplicate(); - var start, end; - - if (offsets.end === undefined) { - start = offsets.start; - end = start; - } else if (offsets.start > offsets.end) { - start = offsets.end; - end = offsets.start; - } else { - start = offsets.start; - end = offsets.end; - } - - range.moveToElementText(node); - range.moveStart('character', start); - range.setEndPoint('EndToStart', range); - range.moveEnd('character', end - start); - range.select(); -} - /** * In modern non-IE browsers, we can support both forward and backward * selections. @@ -204,21 +143,17 @@ function setModernOffsets(node, offsets) { } } -var useIEOffsets = ExecutionEnvironment.canUseDOM && - 'selection' in document && - !('getSelection' in window); - var ReactDOMSelection = { /** * @param {DOMElement} node */ - getOffsets: useIEOffsets ? getIEOffsets : getModernOffsets, + getOffsets: getModernOffsets, /** * @param {DOMElement|DOMTextNode} node * @param {object} offsets */ - setOffsets: useIEOffsets ? setIEOffsets : setModernOffsets, + setOffsets: setModernOffsets, }; module.exports = ReactDOMSelection; diff --git a/src/renderers/dom/shared/ReactInputSelection.js b/src/renderers/dom/shared/ReactInputSelection.js index 317dc370ef..dae4085f6a 100644 --- a/src/renderers/dom/shared/ReactInputSelection.js +++ b/src/renderers/dom/shared/ReactInputSelection.js @@ -98,20 +98,6 @@ var ReactInputSelection = { start: input.selectionStart, end: input.selectionEnd, }; - } else if ( - document.selection && - (input.nodeName && input.nodeName.toLowerCase() === 'input') - ) { - // IE8 input. - var range = document.selection.createRange(); - // There can only be one selection per document in IE, so it must - // be in our element. - if (range.parentElement() === input) { - selection = { - start: -range.moveStart('character', -input.value.length), - end: -range.moveEnd('character', -input.value.length), - }; - } } else { // Content editable or old IE textarea. selection = ReactDOMSelection.getOffsets(input); @@ -136,15 +122,6 @@ var ReactInputSelection = { if ('selectionStart' in input) { input.selectionStart = start; input.selectionEnd = Math.min(end, input.value.length); - } else if ( - document.selection && - (input.nodeName && input.nodeName.toLowerCase() === 'input') - ) { - var range = input.createTextRange(); - range.collapse(true); - range.moveStart('character', start); - range.moveEnd('character', end - start); - range.select(); } else { ReactDOMSelection.setOffsets(input, offsets); } diff --git a/src/renderers/dom/shared/eventPlugins/SelectEventPlugin.js b/src/renderers/dom/shared/eventPlugins/SelectEventPlugin.js index c4a51ff712..1989139b1a 100644 --- a/src/renderers/dom/shared/eventPlugins/SelectEventPlugin.js +++ b/src/renderers/dom/shared/eventPlugins/SelectEventPlugin.js @@ -80,14 +80,6 @@ function getSelection(node) { focusNode: selection.focusNode, focusOffset: selection.focusOffset, }; - } else if (document.selection) { - var range = document.selection.createRange(); - return { - parentElement: range.parentElement(), - text: range.text, - top: range.boundingTop, - left: range.boundingLeft, - }; } }