Функция регулярного выражения, вызывающая зависание хрома - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь найти конкретные слова на html-странице для замены, однако при запуске этой функции функция RegExp () вызывает зависание chrome.Приведенный ниже код представляет собой раздел, в котором это происходит

function test(findWord, replaceWord){
    var searchregexp = new RegExp(findWord.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), "gi");
    console.log(searchregexp);
    var elements = document.getElementsByTagName('*');
    for (var i = 0; i < elements.length; i++) {
        var element = elements[i];
        for (var j = 0; j < element.childNodes.length; j++) {
            var node = element.childNodes[j];
            if (node.nodeType === 3) {
                var text = node.nodeValue;
                var replacedText = text.replace(searchregexp, replaceWord);
                if (replacedText !== text) {
                    element.innerHTML = replacedText;
                }
            }
        }
    }
}

Основываясь на некоторых других прочитанных мною материалах, кажется, что функция RegExp вызывает катастрофический откат, но я не совсем уверен, почему это так.дело или как бы я это решил.

Код работает, если я жестко закодировал определенное регулярное выражение, например / replace / gi, в text.replace ().Однако, если я попытаюсь сделать так, чтобы заменяемое слово не обязательно было постоянным, а с использованием новой функции RegExp chrome зависает

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