HTML (php, css, JS) — закрывающий тег или встроенный комментарий игнорируется

#php #html #inline #comments

#php #HTML #встроенный #Комментарии

Вопрос:

В этом тексте

 <div class="foo" <!-- onclick="bar();" --> /></div>
  

/> отображается в браузере (Chrome) и на устройствах iOS. Моей первой догадкой было удалить / из <div> , но тогда > он все еще отображался в браузере, горе мне!

Решения?

Ответ №1:

Редактировать:

После обсуждения с OP было обнаружено, что метод onclick все еще необходим, поэтому решением было использовать <div class="foo" onclick="bar();"> </div> без «прокомментированного кода» в нем.

Оригинальный ответ:

Попробуйте — <div class="foo" <?php /* onclick="bar();" */ ?> > </div> что приведет к <div class="foo"> </div> . Обратите внимание, что весь текст фильтруется вашим PHP.

Для JSP / ASP используйте <%-- --%> комментарии в стиле. <div class="foo" <%-- onclick="bar();" --%> > </div>

Комментарии:

1. <div class="foo" <!-- onclick="bar();" /--> сработало как по волшебству (Chrome), ваша правка <div class="foo" <!-- onclick="bar();" --> > не сработала, и > текст все еще был виден.

2. Так ли это? Это не сработало в IE, поэтому я обновил свой ответ, чтобы использовать <%

3. Это бессмыслица (если, возможно, вы не пишете ASP вместо HTML. Я не знаю синтаксис комментариев ASP). Это зависит от того, что браузеры неправильно обрабатывают HTML для работы.

4. @Quentin Хотя я не тестировал его на ASP / JSP для решения именно этой проблемы, я совершенно уверен, что <%-- --%> они не отправляются в браузер. Они фильтруются во время компиляции.

5. в таком случае почему бы вам просто не использовать тег in div <div class="foo" onclick="bar();" ></div> without <!-- --> ? Это тоже сработает.

Ответ №2:

Удалите комментарий. Я предполагаю, что браузер интерпретирует закрытие комментария как конечный тег. Просто поместите весь div в комментарий, с другой версией ниже.

Ответ №3:

Комментарии внутри тегов запрещены, поэтому ваш HTML неверен.

Если вам нужен комментарий, поместите его после конца тега:

 <div class="foo"> <!-- onclick="bar();" --> </div>
  

Кроме того, у вас не должно быть / символа в конце начального тега для div.

В HTML (до версии 5) он закрывает начальный тег, поэтому вы добавляете > символ к данным. Большинство браузеров это не учитывают (хотя ваша проблема связана с комментарием).

В HTML-совместимом XHTML это запрещено.

В XHTML это превращает div в самозакрывающийся тег, поэтому конечный тег не имеет соответствующего начального тега.

В HTML 5 это, IIRC, запрещено.

Ответ №4:

Комментарий ( <!-- --> ) — это разметка, которую браузер должен игнорировать.

В этом случае ваша разметка недопустима, потому что вы вложили разметку в разметку недопустимым образом. Вам нужно будет удалить « onclick="bar(); » или переместить весь комментарий из открывающего тега div.

Комментарии:

1. На самом деле это не тег, хотя вы правы в том, что комментарии там не разрешены.