Skip to content

Commit f8b202d

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

File tree

1 file changed

+15
-10
lines changed

1 file changed

+15
-10
lines changed

src/renderers/dom/shared/ReactInputSelection.js

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -41,22 +41,27 @@ function getElementsWithSelections(acc, win) {
4141
var doc;
4242
try {
4343
doc = win.document;
44+
if (!doc) {
45+
return acc;
46+
}
4447
} catch (e) {
4548
return acc;
4649
}
4750
var element = null;
4851
if (win.getSelection) {
4952
var selection = win.getSelection();
50-
var startNode = selection.anchorNode;
51-
var endNode = selection.focusNode;
52-
var startOffset = selection.anchorOffset;
53-
var endOffset = selection.focusOffset;
54-
if (startNode && startNode.childNodes.length) {
55-
if (startNode.childNodes[startOffset] === endNode.childNodes[endOffset]) {
56-
element = startNode.childNodes[startOffset];
57-
}
58-
} else {
59-
element = startNode;
53+
if (selection) {
54+
var startNode = selection.anchorNode;
55+
var endNode = selection.focusNode;
56+
var startOffset = selection.anchorOffset;
57+
var endOffset = selection.focusOffset;
58+
if (startNode && startNode.childNodes.length) {
59+
if (startNode.childNodes[startOffset] === endNode.childNodes[endOffset]) {
60+
element = startNode.childNodes[startOffset];
61+
}
62+
} else {
63+
element = startNode;
64+
}
6065
}
6166
} else if (doc.selection) {
6267
var range = doc.selection.createRange();

0 commit comments

Comments
 (0)