Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.10.2018, 18:45
Интересующийся
Отправить личное сообщение для tester33 Посмотреть профиль Найти все сообщения от tester33
 
Регистрация: 07.12.2017
Сообщений: 13

Удалить HTML-комментарии
Приветствую !
Подскажите скрипт что-бы простейшим способом удалить символы комментариев.

То есть имеем :
<!--
<p>Text 1</p>
<p>Text 2</p>
<p>Text 3</p>
 -->


После загрузки документа, на выходе должны получить:
<p>Text 1</p>
<p>Text 2</p>
<p>Text 3</p>
Ответить с цитированием
  #2 (permalink)  
Старый 18.10.2018, 18:58
Интересующийся
Отправить личное сообщение для tester33 Посмотреть профиль Найти все сообщения от tester33
 
Регистрация: 07.12.2017
Сообщений: 13

Добавлю.
Удалить нужно только как-то определенные комментарии, например такие:
<!-- delete
<p>Text 1</p>
<p>Text 2</p>
<p>Text 3</p>
 -->


То есть "delete" будет означать, что эти комментарии нужно удалить из кода. Остальные не трогать.
Ну, или как-то по другому их определять
Ответить с цитированием
  #3 (permalink)  
Старый 19.10.2018, 08:59
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,202

Сообщение от tester33
Подскажите скрипт что-бы простейшим способом удалить символы комментариев.
На клиенте?
Или таки на сервере при формировании страницы?
Ответить с цитированием
  #4 (permalink)  
Старый 19.10.2018, 09:12
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 642

в ie так не получится... в хроме можно было читать комментарии... читать в том смысле, чтобы парсить можно из документа, а так вряд-ли сами блоки встанут на место,... надо делать финт ушами )
Ответить с цитированием
  #5 (permalink)  
Старый 19.10.2018, 09:36
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,202

Типа набросок...

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<!--
<script src='https://code.jquery.com/jquery-latest.js'></script>
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
window.addEventListener('DOMContentLoaded', function() {
	var o=document.body.childNodes;
	var re=/^\s*delete/;
	for (var i=0; i<o.length; i++) {
		if (o[i].nodeType == Node.COMMENT_NODE) {
			var com=o[i].nodeValue;
			if (re.test(com)) {
				com=com.replace(re,'');
				alert(com);
				// тут можно разобрать текст на теги и вставлять их в ДОМ
				o[i].parentNode.removeChild(o[i]);
			}
		};
	};
});
</script>
</head>
<body>
<p>Comment 0</p>
<!-- delete
<p>Text 1</p>
<p>Text 2</p>
<p>Text 3</p>
 -->
<p>Comment 1</p>
<!--
<p>Text 4</p>
<p>Text 5</p>
<p>Text 6</p>
 -->
 </body>
</html>
Ответить с цитированием
  #6 (permalink)  
Старый 20.10.2018, 12:53
Интересующийся
Отправить личное сообщение для tester33 Посмотреть профиль Найти все сообщения от tester33
 
Регистрация: 07.12.2017
Сообщений: 13

Спасибо, но на странице jquery по ряду причин нельзя. Нужен чистый Javascript.

Смысл сего извращения, спрятать от Яндекса некоторые блоки текста.
Новые алгоритмы Яндекса настолько жестоки, что накладывают санкции на страницы за якобы "не нужный посетителю текст". Так как Яндекс еще и не может выполнять Java, то пришла идея комментировать текстовые блоки, которые он "не будет видеть", а пользователь и Гугл который выполняет Java, "увидят" реальный текст

Подсказали решение задачи другим методом - с использованием JavaScript escape

Оказывается Гугл прекрасно поймет и выполнит такой код, и в индекс поместит нормальный текст.
Яндекс в силу своей тупости, не поймет, для него там текста не будет

Конечно, c удалением комментариев, было-бы лучшее решение, так как не нужно кодировать, но увы, не получилось
Ответить с цитированием
  #7 (permalink)  
Старый 21.10.2018, 00:53
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<div>
		<p>Comment 0</p>
<!-- delete
<p>Text 1</p>
<p>Text 2</p>
<p>Text 3</p>
-->
<p>Comment 1</p>
<!--
<p>Text 4</p>
<p>Text 5</p>
<p>Text 6</p>
-->
<!-- delete
<p>Text 1</p>
<p>Text 2</p>
<p>Text 3</p>
-->
</div>

<script>
	document.querySelectorAll('*').forEach(el=>{
		while(el = el.nextSibling){
			if(el.nodeType === 8 && /^delete/.test(el.textContent.trim())) {
				var fragment = document.createRange().createContextualFragment(el.textContent.trim().replace(/^delete/, ''));
				el.parentNode.replaceChild(fragment, el);
			}
		}
	});
</script>
</body>
</html>

Последний раз редактировалось j0hnik, 21.10.2018 в 00:55.
Ответить с цитированием
  #8 (permalink)  
Старый 22.10.2018, 08:55
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,202

Сообщение от tester33
но на странице jquery по ряду причин нельзя. Нужен чистый Javascript
А я тебе что показал?
Ответить с цитированием
  #9 (permalink)  
Старый 22.10.2018, 12:52
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 642

https://yandex.ru/support/webmaster/...obot/html.html

<!--noindex-->текст, индексирование которого нужно запретить<!--/noindex-->
Ответить с цитированием
  #10 (permalink)  
Старый 24.10.2018, 04:25
Интересующийся
Отправить личное сообщение для tester33 Посмотреть профиль Найти все сообщения от tester33
 
Регистрация: 07.12.2017
Сообщений: 13

noindex пробовали сразу как только яндекс анонсировал ББ
он не спасает
ББ - это фильтр Яндекса, Баден - Баден
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалить стили прописанные в CSS у body и html Sergey1986 Общие вопросы Javascript 7 28.03.2018 16:38
Как из html удалить все комментарии javascript(ом)? An1984tonn Сайт Javascript.ru 5 21.12.2016 09:29
Как удалить из HTML все элементы со стилем hidden Почемучкин Events/DOM/Window 3 24.06.2011 14:40
Как удалить html тег по id? romosyto Я не знаю javascript 5 10.06.2009 18:54
имея this как удалить элемент из тела html clgs Общие вопросы Javascript 1 13.05.2009 17:55