XHTMLのすべての有効な自己終了要素(<br/>など)は何ですか(主要なブラウザによって実装されています)?
XHTMLでは技術的には任意の要素を自動的に閉じることができることを知っていますが、すべての主要なブラウザーでサポートされている要素のリストを探しています。<div />などの自己終了要素が原因で発生する問題の例については、http://dusan.fora.si/blog/self-closing-tagsを参照してください。
XHTMLのすべての有効な自己終了要素(<br/>など)は何ですか(主要なブラウザによって実装されています)?
XHTMLでは技術的には任意の要素を自動的に閉じることができることを知っていますが、すべての主要なブラウザーでサポートされている要素のリストを探しています。<div />などの自己終了要素が原因で発生する問題の例については、http://dusan.fora.si/blog/self-closing-tagsを参照してください。
回答:
XHTMLをサポートするすべてのブラウザー(Firefox、Opera、Safari、IE9)は、すべての要素で自己終了構文をサポートします。
<div/>
、<script/>
、<br></br>
すべてはうまく動作するはずです。そうでない場合は、不適切にXHTML DOCTYPEが追加されたHTMLがあります。
DOCTYPEは、ドキュメントの解釈方法を変更しません。MIMEタイプのみです。
HTML WGはこの問題について議論しました:ガイドラインに従って、古い(HTMLのみの)ブラウザーがXHTML 1.0文書を受け入れ、text / htmlとして提供できるようにすることを目的としていました。したがって、text / htmlとして提供されるドキュメントは、XHTMLではなくHTMLとして扱う必要があります。
W3Cバリデーターはそのルールをほとんど無視するため、これは非常に一般的な落とし穴ですが、ブラウザーはそれを忠実に守っています。読んで 理解HTML、XMLやXHTMLを WebKitのブログから:
実際、インターネット上のXHTML文書の大半はとして提供されてい
text/html
ます。つまり、XHTMLではありませんが、実際にはHTMLパーサーのエラー処理で無効になっている無効なHTMLです。これらすべての「有効なXHTML 1.0!」ウェブ上のリンクは本当に「無効なHTML 4.01!」と言っています。
XHTMLのDOCTYPEで実際のXHTMLまたは無効なHTMLがあるかどうかをテストするには、これをドキュメントに挿入します。
<span style="color:green"><span style="color:red"/>
If it's red, it's HTML. Green is XHTML.
</span>
検証し、実際のXHTMLでは完全に機能します(1と2を参照)。自分の目が信じられない(またはMIMEタイプの設定方法がわからない)場合は、XHTMLプロキシ経由でページを開いてください。
チェックする別の方法は、Firefoxでソースを表示することです。スラッシュが無効な場合は、赤で強調表示されます。
HTML5 / XHTML5では、これは変更されておらず、追加のもないため、区別はさらに明確ですDOCTYPE
。Content-Type
王です。
ちなみに、XHTML仕様では、XHTMLをXMLアプリケーションにすることで、任意の要素を自動的に閉じることができるようになっています。
空要素タグは、キーワードEMPTYを使用して宣言されているかどうかに関係なく、コンテンツを持たない要素に使用できます。
空の要素がなければなりませんどちらか終了タグかで終わらなければなりません開始タグを持っています
/>
。たとえば、<br/>
または<hr></hr>
<script>
またはの自己終了バージョンを使用<div>
すると、レンダリング/解釈が異なるため、afaikを修正しません。
text/html
。実際のXHTMLでは、application/xhtml+xml
問題なく動作するため送信されます。投票する前に、私がリンクした記事(またはXHTML仕様の付録C)をお読みください。
application/xhtml+xml
MIMEタイプを使用すると、それ<script/>
が機能することを保証できます。MIMEタイプ。のみ。
このトピックで非常に注意する必要がある要素の1つは、<script
>要素です。外部ソースファイルがある場合は、自分で閉じるときに問題が発生します。それを試してみてください:
<!-- this will not consistently work in all browsers! -->
<script type="text/javascript" src="external.js" />
これはFirefoxでは機能しますが、少なくともIE6では機能しません。私が知っているのは、私が見たすべての要素を熱心に自己閉鎖しているときにこれに遭遇したためです;-)
<area />
<base />
<basefont />
<br />
<hr />
<input />
<img />
<link />
<meta />
/>
:"area", "base", "basefont", "br", "col", "frame", "hr", "img", "input", "link", "meta", "param"
grep EMPTY xhtml1-strict.dtd | sort
か、またはgrep EMPTY xhtml1-transitional.dtd | sort
より良い質問は、コードに影響を与えることなく、HTMLモードでも自動クローズできるタグは何でしょうか?回答:空のコンテンツ(無効)があるもののみ。HTML仕様によると、次の要素は無効です。
area, base, br, col, embed, hr, img, input, keygen, link, menuitem, meta, param, source, track, wbr
古いバージョンの仕様もリストされていcommand
ます。さらに、さまざまなソースによると、次の廃止または非標準のタグは無効です。
basefont, bgsound, frame, isindex
何について<meta>
と<link>
?なぜ彼らはそのリストに載っていないのですか?
大まかに言って、コンテンツを持つように意図されている要素を自動的に閉じないでください。遅かれ早かれブラウザの問題が確実に発生するためです。
以下のような自然に自己終了しているもの、<br>
とは<img>
、明らかです。存在しないもの...自己閉鎖しないでください!
前回チェックしたとき、HTML5にリストされているempty / void要素は次のとおりです。
著者に有効:area、base、br、col、command、embed、eventsource、hr、img、input、link、meta、param、source
著者には無効:basefont、bgsound、frame、spacer、wbr
HTML5の新機能のいくつかに加えて、XHTMLをtext / htmlとして提供する場合にサポートされる可能性があるものについてのアイデアが得られます。(生成されたDOMを調べてテストするだけです。)
application / xhtml + xml(XMLにする)として提供されるXHTMLについては、XMLルールが適用され、どの要素も空にすることができます(XHTML DTDがこれを表現できない場合でも)。
xHTML DTDが表示されるはずです。それらはすべてリストされています。ここにすべての主要なものの簡単なレビューがあります:
<br />
<hr />
<img />
<input />
HTML 5では「void」要素と呼ばれています。公式のW3仕様にリストされています。
void要素は、どのような状況でもコンテンツモデルがコンテンツを持つことを決して許可しない要素です。
2013年4月現在、次のとおりです。
area、base、br、col、command、embed、hr、img、input、keygen、link、meta、param、source、track、wbr
2018年12月(HTML 5.2)の時点で、次のとおりです。
area、base、br、col、embed、hr、img、input、link、meta、param、source、track、wbr
特に私が書くページの大部分は生成されているか、タグにコンテンツが含まれているため、これについて詳しく説明するつもりはありません。それらを自動閉鎖するときに私にトラブルを与えた唯一の2つは:
<title/>
このため、私は単に別の終了タグを常に与えることに頼っていました。なぜなら、<head></head>
それがそこにあると、それはあなたのコードをとにかく操作するのに本当に厄介なものにするわけではないからです。
<script/>
これは私が最近問題に遭遇した大きな問題です。何年もの間<script/>
、スクリプトが外部ソースからのものであるときは常に自己終了タグを使用していました。しかし、私はごく最近、nullフォームに関するJavaScriptエラーメッセージの受信を開始しました。数日の調査の結果、問題は(おそらく)ブラウザが<form>
タグに到達しなかったことが原因であることがわかりました<script/>
。だから別々にしたとき<script></script>
タグにしたとき、すべてがうまくいった。同じブラウザで作成したさまざまなページでなぜ違うのかわかりませんが、解決策を見つけることは大きな安心でした!