Код: Выделить всё
this._root = root;
this._shadows = [];
let possibleShadow = this._root
while (possibleShadow !== document.body) {
if (possibleShadow.nodeType === 11) {
if(possibleShadow.host) {
this._shadows.push(possibleShadow);
possibleShadow = possibleShadow.host;
} else {
break;
}
} else {
possibleShadow = possibleShadow.parentNode;
}
}
< /code>
Это, похоже, достоверно предоставляет редактору список теневых корнов в иерархии. Я должен сделать это, я попытался просто предоставить корень тени выше этого ._ROOT Редактор предоставляет метод (метод (метод (метод
Код: Выделить всё
getSelectionКод: Выделить всё
getSelection() {
const selection = window.getSelection();
let range = document.createRange();
if (selection.rangeCount > 0) {
console.log('shadows length', this._shadows.length);
try {
const ranges = selection.getComposedRanges({shadowRoots: this._shadows})
console.log('got ranges length', ranges.length );
range.setStart(ranges[0].startContainer, ranges[0].startOffset);
range.setEnd(ranges[0].endContainer, ranges[0].endOffset);
console.log('get compsed range', range);
} catch(error) {
console.log ('errored in getComposedRanges with', error, 'stack', error.stack);
}
} else {
console.log('make new range for selection')
range.setStart(this._root,0);
range.setEnd(this._root, 0);
selection.setBaseAndExtent(
range.startContainer,
range.startOffset,
range.endContainer,
range.endOffset
);
}
return range;
}
}
Что здесь происходит? Что означает TypeError?
(Примечание: на рабочем столе Chrom>
Подробнее здесь: https://stackoverflow.com/questions/797 ... ror-on-ios
Мобильная версия