Подтвердить что ты не робот

Возможно ли удалить html-комментарий из dom с помощью jquery

просто интересно, есть ли способ удалить комментарий html с помощью jquery.

<!-- <div id="main">Some text </div> -->

спасибо

4b9b3361

Ответ 1

Попробуйте следующее:

$('*').contents().each(function() {
    if(this.nodeType === Node.COMMENT_NODE) {
        $(this).remove();
    }
});

EDIT:. Это удаляет элементы из DOM. Браузеры часто хранят копию исходного источника страницы, доступную через элемент меню. Это не обновляется.

Если вы хотите скрыть свои комментарии, вы всегда можете вставить всю HTML-разметку (с комментариями) в DOM с помощью javascript. Конечно, javascript можно было бы просмотреть, но это шаг, удаленный с первого взгляда, который люди будут смотреть.

Ответ 2

Не то, чтобы я знал. Но я не понимаю, как это будет. Комментарий будет отображаться только в том случае, если вы просмотрите источник, и большинство (если не все) браузеров, у которых есть опция источника просмотра, по умолчанию предоставят вам источник до загрузки javascript.

Ответ 3

Это может быть немного взломанным способом, но для меня это было безупречным удовольствием.

Использует функцию split().

Во-первых,

codeWithComments = $("*yourelementhere*").html();
var withoutComments = codeWithComments.split('-->');
$("*yourelementhere*").html(withoutComments[withoutComments.length-1]);

Это заменит HTML данного элемента кодом непосредственно после последнего '- > ', это, конечно, предполагает, что у вас есть только один набор комментариев в данном элементе. Вы можете разделить последнюю строку комментария, чтобы получить точное соответствие.

Работал для меня, может не работать во всех случаях.

Ответ 4

Я столкнулся с ошибками, когда script попытался получить доступ к содержимому IFrame. Вот модифицированная версия, которая пропускает IFrames:

$('*')
.filter((idx, el) => !(el instanceof HTMLIFrameElement))
.contents()
.each(() => {
    try {
        if(this.nodeType === Node.COMMENT_NODE) {
            $(this).remove();
        }
    } catch (e) {
        console.error(e);
    }
});

Ответ 5

Я почти уверен, что комментарии не являются частью DOM. Они являются частью исходного HTML-кода, но когда браузеры преобразуют его в DOM, они становятся лишенными, поскольку они не предназначены для рендеринга.