@@ -16,7 +16,11 @@ var {TEXT_NODE} = require('../shared/HTMLNodeType');
1616 * @return {?object }
1717 */
1818function getModernOffsets ( outerNode ) {
19- var selection = window . getSelection && window . getSelection ( ) ;
19+ var win = window ;
20+ if ( outerNode . ownerDocument && outerNode . ownerDocument . defaultView ) {
21+ win = outerNode . ownerDocument . defaultView ;
22+ }
23+ var selection = win . getSelection && win . getSelection ( ) ;
2024
2125 if ( ! selection || selection . rangeCount === 0 ) {
2226 return null ;
@@ -153,11 +157,13 @@ function getModernOffsetsFromPoints(
153157 * @param {object } offsets
154158 */
155159function setModernOffsets ( node , offsets ) {
156- if ( ! window . getSelection ) {
160+ var doc = node . ownerDocument || document ;
161+
162+ if ( ! doc . defaultView . getSelection ) {
157163 return ;
158164 }
159165
160- var selection = window . getSelection ( ) ;
166+ var selection = doc . defaultView . getSelection ( ) ;
161167 var length = node [ getTextContentAccessor ( ) ] . length ;
162168 var start = Math . min ( offsets . start , length ) ;
163169 var end = offsets . end === undefined ? start : Math . min ( offsets . end , length ) ;
@@ -183,7 +189,7 @@ function setModernOffsets(node, offsets) {
183189 ) {
184190 return ;
185191 }
186- var range = document . createRange ( ) ;
192+ var range = doc . createRange ( ) ;
187193 range . setStart ( startMarker . node , startMarker . offset ) ;
188194 selection . removeAllRanges ( ) ;
189195
0 commit comments