Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Удалить HTML-комментарии (https://javascript.ru/forum/events/75552-udalit-html-kommentarii.html)

tester33 24.10.2018 04:35

j0hnik, спасибо
то, что надо !

tester33 10.11.2018 18:48

А как-бы этот js вынести во внешний файл?
Что-то во внешнем файле у меня он не заработал.


Цитата:

Сообщение от j0hnik (Сообщение 496709)
<!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>


рони 10.11.2018 18:51

tester33,
обернуть в load

tester33 11.11.2018 09:43

спасибо,
но я хотел добавить функцию в уже существующий js-файл, который указан в html
<script src="test.js"></script>
то есть, в тtest.js сделал так
function myTxt(){

    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);
            }
        }
    });	

}


window.onload = function(){
	myTxt();
}

что не так ?

рони 11.11.2018 09:50

tester33,
не копируйте тему целиком.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script>
    addEventListener('load', function() {
             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>
</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>
</body>
</html>

j0hnik 11.11.2018 09:51

tester33, вообще должна работать
чтобы лишние сущности не плодить сделайте так.
window.addEventListener('load', function() {
	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);
			}
		}
	});
});


Часовой пояс GMT +3, время: 18:52.