[解決済み] HTML5でHTMLコメントの標準が変わる?
質問
最近、HTML5で新しいコメントの仕方があることを知りました。
典型的な
<!-- -->
という複数行のコメントで、私は
と思った
私は、私の IDE が通常の
<!div >
をコメントアウトしていました。そこでテストしてみたところ、なんとChromeがそのタグをコメントアウトしていたのです。それは
だけ
がコメントアウトされ、div のコンテンツはコメントアウトされなかったので、近い方の
<!/div>
をコメントアウトして、他のdivを閉じないようにする必要がありました。
もう一つテストしてみたところ、一般的に任意のタグの冒頭の前にエクスクラメーションマークを付けると、この記号
<
という記号を付けると、そのタグはコメントアウトされるようです。
これは実際に新しいことなのでしょうか?悪い習慣なのでしょうか?とても便利なのですが、実用的なのでしょうか?
詳細の編集。 構文エラーやこの特定の構文の誤認は正当な理由ですが、なぜChromeは は実際に は完全なコメントとしてそれらをレンダリングするのでしょうか?
というコードが書かれています。 :
<!div displayed> some text here that is still displayed <!/div>
とレンダリングされます。 :
<!--div displayed--> some text here that is still displayed <!--/div-->
どのように解決するのですか?
HTML5 にはコメントに関する新しい規格はありません。唯一の有効なコメント構文は、依然として
<!-- -->
. から
W3C HTML5 の 8.1.6 節を参照してください。
:
コメント
は、U+003C LESS-THAN SIGN, U+0021 EXCLAMATION MARK, U+002D HYPHEN-MINUS, U+002D HYPHEN-MINUS の4文字のシーケンスで開始しなければならない (
<!--
).
は
<!
構文は SGML DTD マークアップに由来するもので、HTML5 の一部ではありません。HTML5では、コメント、CDATAセクション、およびDOCTYPE宣言のために予約されています。したがって、この代替案がバッドプラクティスであるかどうかは、時代遅れのマークアップの使用 (またはより悪いことに依存) をバッドプラクティスであると考えるかどうかに依存します。
Validator.nu は、あなたが持っているものを "Bogus comment." と呼びます - これは、有効なコメントでないにもかかわらず、コメントのように扱われることを意味します。これはおそらく、SGML ベースで、次のような形式のマークアップ宣言があった HTML5 以前との後方互換性のためだと思われます。
<!FOO>
という形でマークアップ宣言をしていたので、これは新しいとは言えません。それらが扱われる理由は
のように
コメントのように扱われるのは、SGML のマークアップ宣言がレンダリングを前提としない特別な宣言だったからですが、HTML5 では(上記の例外を除き)無意味なので、HTML5 の DOM に関する限りは
は
コメント以外の何ものでもありません。
の中の次のステップは セクション8.2.4 はこの結論を導き出し、Chrome はそれに忠実に従っているように見えます。
-
次の入力文字を消費する。
"<" (U+003C)
タグを開いた状態に切り替えます。 -
次の入力文字を消費する。
"!"(U+0021)
マークアップ宣言のオープン状態に切り替えます。 -
次の2文字がともに "-" (U+002D) 文字の場合、その2文字を消費し、データが空文字列のコメントトークンを作成し、コメント開始状態に切り替わります。
そうでなければ、次の7文字が単語"DOCTYPE"のASCII大文字小文字を区別しないマッチであれば、それらの文字を消費し、DOCTYPE状態に切り替わります。
そうでなければ、調整された現在のノードがあり、それがHTML名前空間の要素でなく、次の7文字が文字列"[CDATA]"(前後にU+005B LEFT SQUARE BRACKET文字を持つ5つの大文字の"CDATA")に対するケースセンシティブマッチの場合、これらの文字を消費してCDATAセクション状態に切り替わります。
そうでなければ、これはパースエラーです。インチキコメント状態に切り替えます。次に消費される文字があれば、それがコメント内の最初の文字となります。
遭遇した文字のシーケンスが以下の場合にのみ、コメント開始状態に切り替えると書かれていることに注意してください。
<!--
である場合のみ、コメント開始状態に切り替えると書かれていることに注意してください。これは、上記のセクション8.1.6で述べられていることを反映しています。 -
最初の ">" (U+003E) 文字またはファイルの終わり (EOF) のどちらか先に来るまでのすべての文字を消費します。そのデータは、ステートマシンが偽のコメント状態に移行する原因となった文字から始まり、最後に消費された文字の直前の文字まで(つまり、U+003E または EOF 文字の直前の文字まで)のすべての文字を連結したコメント トークンを出力します。(コメントがファイルの終わり(EOF)から始まっていた場合、トークンは空になります。同様に、トークンが文字列 " で生成された場合は、空です。
<!>
という文字列で生成された場合、トークンは空になります)。わかりやすく言うと、これが転じて
<!div displayed>
を<!--div displayed-->
と<!/div>
を<!--/div-->
に変換します。
最後に、おそらく他の HTML5 準拠のパーサーも Chrome と同じ動作をすることが予想されます。
関連
-
[解決済み] リンクのように動作するHTMLボタンを作成する方法
-
[解決済み] HTMLのid属性に有効な値は何ですか?
-
[解決済み] How can I set the default value for an HTML <select> element?
-
[解決済み] jQueryを使用してハイパーリンクのhref属性を変更する方法
-
[解決済み] HTMLの "role "属性は何のためにあるのですか?
-
[解決済み] HTML5の数値入力のスピンボックスを非表示にすることはできますか?
-
[解決済み] HTML5でfloat入力タイプはありますか?
-
[解決済み] mailto:を使ってメールの件名や内容を設定することはできますか?
-
[解決済み】なぜHTMLは "chucknorris "を色と見なすのか?
-
[解決済み】HTML5入力のプレースホルダの色をCSSで変更する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] BootstrapのCollapse Navbarが動作しない
-
[解決済み] bootstrapでボタンにリンクを貼るには?
-
[解決済み] HTML IFステートメント
-
[解決済み] HTML 5: Is it <br>, <br/>, or <br />?
-
[解決済み] Sublime Text 2を使ってHTMLコードを再フォーマットするにはどうしたらいいですか?
-
[解決済み] WebSocketとサーバー送信型イベントの比較/EventSource
-
[解決済み] Bootstrap3による垂直方向の整列
-
[解決済み] input type="file "ボタンのスタイリング
-
[解決済み] HTMLアンカーは'name'と'id'のどちらで作成するのが良いですか?
-
[解決済み] IMGとCSSのbackground-imageはいつ使い分ける?