Найти и заменить текст в целом DOM - PullRequest
0 голосов
/ 14 июня 2019

Я делаю расширение для Chrome, чтобы найти строку, если текст в DOM, и заменить ее чем-то другим.Каков наилучший способ обойти весь элемент DOM и заменить текст в DOM.Я думал о том, чтобы поместить document.body в переменную, а затем обработать ее как очередь, но я запутался, как это сделать. Это мой код:

flag = true;

var word = 'word',//word to replace
  queue = [document.body],
  curr;
try {
  while ((curr = queue.pop()) || flag) {
    if (!(curr.textContent.match(word))
      continue;
    for (var i = 0; i < curr.childNodes.length; ++i) {
      if (!flag) break;
      switch (curr.childNodes[i].nodeType) {
        case Node.TEXT_NODE: // 3
          if (curr.childNodes[i].textContent.match(word)) {
            curr.childNodes[i].textContent("xxx");//replacing the word
            console.log('Found!');
            flag = false;
            break;
          }
          break;
        case Node.ELEMENT_NODE: // 1
          queue.push(curr.childNodes[i]);
          break;
      }
    }
  }

} catch (e) {
  //
}

1 Ответ

0 голосов
/ 14 июня 2019

вы можете сделать это, я думаю, с

function replaceAll(recherche, remplacement, chaineAModifier)
{
   return chaineAModifier.split(recherche).join(remplacement);
}
str = $('body').html()
replaceAll(search_word,replacement,str)
$('body').html(str)

но это заменит все, включая атрибут html узлов и имя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...