Удалить 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> |
Добавлю.
Удалить нужно только как-то определенные комментарии, например такие: <!-- delete <p>Text 1</p> <p>Text 2</p> <p>Text 3</p> --> То есть "delete" будет означать, что эти комментарии нужно удалить из кода. Остальные не трогать. Ну, или как-то по другому их определять |
Цитата:
Или таки на сервере при формировании страницы? |
в ie так не получится... в хроме можно было читать комментарии... читать в том смысле, чтобы парсить можно из документа, а так вряд-ли сами блоки встанут на место,... надо делать финт ушами )
|
Типа набросок... ;)
<!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> |
Спасибо, но на странице jquery по ряду причин нельзя. Нужен чистый Javascript.
Смысл сего извращения, спрятать от Яндекса некоторые блоки текста. Новые алгоритмы Яндекса настолько жестоки, что накладывают санкции на страницы за якобы "не нужный посетителю текст". Так как Яндекс еще и не может выполнять Java, то пришла идея комментировать текстовые блоки, которые он "не будет видеть", а пользователь и Гугл который выполняет Java, "увидят" реальный текст Подсказали решение задачи другим методом - с использованием JavaScript escape ![]() Оказывается Гугл прекрасно поймет и выполнит такой код, и в индекс поместит нормальный текст. Яндекс в силу своей тупости, не поймет, для него там текста не будет Конечно, c удалением комментариев, было-бы лучшее решение, так как не нужно кодировать, но увы, не получилось |
<!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> |
Цитата:
|
https://yandex.ru/support/webmaster/...obot/html.html
<!--noindex-->текст, индексирование которого нужно запретить<!--/noindex--> |
noindex пробовали сразу как только яндекс анонсировал ББ
он не спасает ББ - это фильтр Яндекса, Баден - Баден |
Часовой пояс GMT +3, время: 06:53. |