Skip to content

Commit 6ac703f

Browse files
committed
Add guards for Firefox and Safari compatibility
Addresses facebook#7936 (comment) and summernote/summernote#1057
1 parent f6f9e35 commit 6ac703f

File tree

1 file changed

+15
-10
lines changed

1 file changed

+15
-10
lines changed

packages/react-dom/src/client/ReactInputSelection.js

+15-10
Original file line numberDiff line numberDiff line change
@@ -38,22 +38,27 @@ function getElementsWithSelections(acc, win) {
3838
var doc;
3939
try {
4040
doc = win.document;
41+
if (!doc) {
42+
return acc;
43+
}
4144
} catch (e) {
4245
return acc;
4346
}
4447
var element = null;
4548
if (win.getSelection) {
4649
var selection = win.getSelection();
47-
var startNode = selection.anchorNode;
48-
var endNode = selection.focusNode;
49-
var startOffset = selection.anchorOffset;
50-
var endOffset = selection.focusOffset;
51-
if (startNode && startNode.childNodes.length) {
52-
if (startNode.childNodes[startOffset] === endNode.childNodes[endOffset]) {
53-
element = startNode.childNodes[startOffset];
54-
}
55-
} else {
56-
element = startNode;
50+
if (selection) {
51+
var startNode = selection.anchorNode;
52+
var endNode = selection.focusNode;
53+
var startOffset = selection.anchorOffset;
54+
var endOffset = selection.focusOffset;
55+
if (startNode && startNode.childNodes.length) {
56+
if (startNode.childNodes[startOffset] === endNode.childNodes[endOffset]) {
57+
element = startNode.childNodes[startOffset];
58+
}
59+
} else {
60+
element = startNode;
61+
}
5762
}
5863
} else if (doc.selection) {
5964
var range = doc.selection.createRange();

0 commit comments

Comments
 (0)