Deleted a specific code for ie8 - document.selection (#9298)
Andrey Marchenko committed
Mar 31, 2017 at 03:00 UTC
5ad1c76386142fbb4e573ca41cc7fad004de8b95
3 files changed
+2
-98
src/renderers/dom/shared/ReactDOMSelection.js
+2
-67
@@ -11,8 +11,6 @@
11
12
'use strict';
13
14
-var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');
15
-
14
var getNodeForCharacterOffset = require('getNodeForCharacterOffset');
15
var getTextContentAccessor = require('getTextContentAccessor');
16
@@ -25,39 +23,6 @@ function isCollapsed(anchorNode, anchorOffset, focusNode, focusOffset) {
23
return anchorNode === focusNode && anchorOffset === focusOffset;
24
}
25
28
-/**
29
- * Get the appropriate anchor and focus node/offset pairs for IE.
30
- *
31
- * The catch here is that IE's selection API doesn't provide information
32
- * about whether the selection is forward or backward, so we have to
33
- * behave as though it's always forward.
34
- *
35
- * IE text differs from modern selection in that it behaves as though
36
- * block elements end with a new line. This means character offsets will
37
- * differ between the two APIs.
38
- *
39
- * @param {DOMElement} node
40
- * @return {object}
41
- */
42
-function getIEOffsets(node) {
43
- var selection = document.selection;
44
- var selectedRange = selection.createRange();
45
- var selectedLength = selectedRange.text.length;
46
-
47
- // Duplicate selection so we can move range without breaking user selection.
48
- var fromStart = selectedRange.duplicate();
49
- fromStart.moveToElementText(node);
50
- fromStart.setEndPoint('EndToStart', selectedRange);
51
-
52
- var startOffset = fromStart.text.length;
53
- var endOffset = startOffset + selectedLength;
54
-
55
- return {
56
- start: startOffset,
57
- end: endOffset,
58
- };
59
-}
60
-
26
/**
27
* @param {DOMElement} node
28
* @return {?object}
@@ -130,32 +95,6 @@ function getModernOffsets(node) {
95
};
96
}
97
133
-/**
134
- * @param {DOMElement|DOMTextNode} node
135
- * @param {object} offsets
136
- */
137
-function setIEOffsets(node, offsets) {
138
- var range = document.selection.createRange().duplicate();
139
- var start, end;
140
-
141
- if (offsets.end === undefined) {
142
- start = offsets.start;
143
- end = start;
144
- } else if (offsets.start > offsets.end) {
145
- start = offsets.end;
146
- end = offsets.start;
147
- } else {
148
- start = offsets.start;
149
- end = offsets.end;
150
- }
151
-
152
- range.moveToElementText(node);
153
- range.moveStart('character', start);
154
- range.setEndPoint('EndToStart', range);
155
- range.moveEnd('character', end - start);
156
- range.select();
157
-}
158
-
98
/**
99
* In modern non-IE browsers, we can support both forward and backward
100
* selections.
@@ -204,21 +143,17 @@ function setModernOffsets(node, offsets) {
143
}
144
}
145
207
-var useIEOffsets = ExecutionEnvironment.canUseDOM &&
208
- 'selection' in document &&
209
- !('getSelection' in window);
210
-
146
var ReactDOMSelection = {
147
/**
148
* @param {DOMElement} node
149
*/
215
- getOffsets: useIEOffsets ? getIEOffsets : getModernOffsets,
150
+ getOffsets: getModernOffsets,
151
152
/**
153
* @param {DOMElement|DOMTextNode} node
154
* @param {object} offsets
155
*/
221
- setOffsets: useIEOffsets ? setIEOffsets : setModernOffsets,
156
+ setOffsets: setModernOffsets,
157
};
158
159
module.exports = ReactDOMSelection;
src/renderers/dom/shared/ReactInputSelection.js
-23
@@ -98,20 +98,6 @@ var ReactInputSelection = {
98
start: input.selectionStart,
99
end: input.selectionEnd,
100
};
101
- } else if (
102
- document.selection &&
103
- (input.nodeName && input.nodeName.toLowerCase() === 'input')
104
- ) {
105
- // IE8 input.
106
- var range = document.selection.createRange();
107
- // There can only be one selection per document in IE, so it must
108
- // be in our element.
109
- if (range.parentElement() === input) {
110
- selection = {
111
- start: -range.moveStart('character', -input.value.length),
112
- end: -range.moveEnd('character', -input.value.length),
113
- };
114
- }
101
} else {
102
// Content editable or old IE textarea.
103
selection = ReactDOMSelection.getOffsets(input);
@@ -136,15 +122,6 @@ var ReactInputSelection = {
122
if ('selectionStart' in input) {
123
input.selectionStart = start;
124
input.selectionEnd = Math.min(end, input.value.length);
139
- } else if (
140
- document.selection &&
141
- (input.nodeName && input.nodeName.toLowerCase() === 'input')
142
- ) {
143
- var range = input.createTextRange();
144
- range.collapse(true);
145
- range.moveStart('character', start);
146
- range.moveEnd('character', end - start);
147
- range.select();
125
} else {
126
ReactDOMSelection.setOffsets(input, offsets);
127
}
src/renderers/dom/shared/eventPlugins/SelectEventPlugin.js
-8
@@ -80,14 +80,6 @@ function getSelection(node) {
80
focusNode: selection.focusNode,
81
focusOffset: selection.focusOffset,
82
};
83
- } else if (document.selection) {
84
- var range = document.selection.createRange();
85
- return {
86
- parentElement: range.parentElement(),
87
- text: range.text,
88
- top: range.boundingTop,
89
- left: range.boundingLeft,
90
- };
83
}
84
}
85