zkrvndm
@zkrvndm
Архитектор решений

Как перебрать все текстовые узлы на странице?

Вчера решал интересную задачу, нужно было найти и перебрать все текстовые узлы на страницы.

Время меня поджимало, поэтому я сделал это в лоб:
var all_elements = document.querySelectorAll('body *');

for (var n = 0; n < all_elements.length; n++) {
	
	var all_nodes = all_elements[n].childNodes;
	
	for (var i = 0; i < all_nodes.length; i++) {
		
		if (all_nodes[i].nodeName === '#text') {
			
			var node_text = all_nodes[i].nodeValue;
			
			if (node_text.includes('мат')) {
				
				console.log("Текстовый узел содержит мат:\n" + node_text + "\nОн будет удален.");
				
				all_nodes[i].nodeValue = '***удалено защитой***';
				
			}
		}
		
		
	}
	
}

Сегодня на свежую голову понимаю, что возможно это не самый оптимальный метод.

Как бы вы сами решили похожую задачу? Спасибо.
  • Вопрос задан
  • 292 просмотра
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
через TreeWalker брал бы только NodeFilter.SHOW_TEXT – текстовые узлы
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
samodum
@samodum
Какой вопрос - такой и ответ
(node_text.includes('хуй'))

Нельзя так делать.
У тебя будет ошибка на словах "Хуйхуа", "подстрахуй меня" и прочее
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы