let body = document.getElementById('analyseArticleBody').innerHTML
let pattern = new RegExp('(' + ' ' + text + ' ' + ')', 'gi')
let regex = '(<\\s*mark[^>]*>(' +text+ ')<\\s*/\\s*mark>)'
let patternToRemove = new RegExp(regex, 'gi')
body = body.replace(patternToRemove, (match, offset, string) => string)
let highlightedBody = body.replace(pattern, (match) => '<mark id="marked">' + match.trim() + '</mark>')
document.getElementById('analyseArticleBody').innerHTML = highlightedBody
this.selectAllTheHighlightedWords()
},
selectAllTheHighlightedWords () {
let selection = window.getSelection()
let strong = document.getElementsByTagName('mark')
if (selection.rangeCount > 0) {
selection.removeAllRanges()
}
// console.log(range)
for (let i = 0; i < strong.length; i++) {
let range = document.createRange()
range.selectNode(strong[i])
selection.addRange(range)
}
},
- В основном я хочу выбрать несколько вхождений и получить диапазон из window.getSelection (). Я хочу диапазон и соответствующее начальное и конечное смещение всех слов, выделенных тегами меток. Метод selectAllTheHighlightedWords () прекрасно работает в fire-fox и выделяет все вхождения в окне ... но в других браузерах он не работает.