Есть ли способ, чтобы я мог получить начальное и конечное смещение всех вхождений искомого слова - PullRequest
0 голосов
/ 13 апреля 2020
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 и выделяет все вхождения в окне ... но в других браузерах он не работает.
...