(主要なブラウザで実装されている) 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>
すべて正常に動作するはずです。そうでない場合は、HTMLに不適切に追加された XHTML DOCTYPE があります。
DOCTYPE は、ドキュメントの解釈方法を変更しません。MIME タイプのみが.
HTML WG はこの問題について議論しました: その意図は、古い (HTML のみの) ブラウザがガイドラインに従って XHTML 1.0 ドキュメントを受け入れ、それらを text/html として提供できるようにすることでした。したがって、text/html として提供されるドキュメントは、XHTML としてではなく、HTML として扱う必要があります。
W3C Validator はそのルールをほとんど無視していますが、ブラウザーはこのルールを忠実に守っているため、これは非常によくある落とし穴です。WebKit ブログからHTML、XML、および XHTML を理解するをお読みください 。
実際、インターネット上の XHTML ドキュメントと思われるものの大半は、
text/html
. つまり、それらはまったく XHTML ではなく、実際には無効な HTML であり、HTML パーサーのエラー処理によって処理されます。これらすべての「有効な XHTML 1.0!」Web 上のリンクは、実際には「無効な 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 vs 2 )。信じられない場合 (または MIME タイプの設定方法がわからない場合) は、XHTML プロキシ経由でページを開きます。
確認するもう 1 つの方法は、Firefox でソースを表示することです。無効なスラッシュは赤で強調表示されます。
HTML5/XHTML5 ではこれは変更されておらず、追加DOCTYPE
の . Content-Type
王です。
記録として、XHTML 仕様では、XHTML をXML アプリケーションにすることで、任意の要素を自己終了にすることができます: [私の強調]
空要素タグは、キーワード EMPTY を使用して宣言されているかどうかに関係なく、コンテンツを持たない要素に使用できます。
XHTML 仕様にも明示的に示されています。
空の要素には終了タグが含まれているか、開始タグが で終わっている必要があり
/>
ます。たとえば、<br/>
または<hr></hr>
このトピックで非常に注意すべき要素の 1 つは<script
> 要素です。外部ソース ファイルがある場合、それを閉じたときに問題が発生します。それを試してみてください:
<!-- this will not consistently work in all browsers! -->
<script type="text/javascript" src="external.js" />
これは Firefox では機能しますが、少なくとも IE6 では機能しません。私が見たすべての要素を熱心に自己閉鎖したときにこれに遭遇したので、私は知っています;-)
自己終了構文は、application/xhtml+xml 内のすべての要素で機能します。text/html のどの要素でもサポートされていませんが、HTML4 で「空」または HTML5 で「空」である要素はいずれにしても終了タグを取らないため、それらにスラッシュを付けると次のように表示されます。自己終了構文がサポートされました。
<area />
<base />
<basefont />
<br />
<hr />
<input />
<img />
<link />
<meta />
より良い質問は、コードに影響を与えずに HTML モードでもセルフクローズできるタグはどれですか? 回答: 内容が空である (無効である) もののみ。HTML 仕様によると、次の要素は無効です。
area, base, br, col, embed, hr, img, input, keygen, link, menuitem, meta, param, source, track, wbr
古いバージョンの仕様も記載されていcommand
ます。さらに、さまざまな情報源によると、次の古いタグまたは非標準タグは無効です。
basefont, bgsound, frame, isindex
これが誰かに役立つことを願っています:
<base />
<basefont />
<frame />
<link />
<meta />
<area />
<br />
<col />
<hr />
<img />
<input />
<param />
<meta>
とはどう<link>
ですか?なぜ彼らはそのリストに載っていないのですか?
簡単な経験則として、コンテンツを含むことを意図した要素を自動的に閉じないでください。遅かれ早かれブラウザの問題が確実に発生するためです。
<br>
やのように自然に自己閉鎖するものは<img>
明らかなはずです。そうでないものは...ただそれらを閉じないでください!
それらは、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
前回確認したところ、以下が HTML5 に記載されている空/無効要素でした。
作成者に有効: 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 として提供される XHTML (これにより XML になります) に関しては、XML 規則が適用され、任意の要素を空にすることができます (XHTML DTD はこれを表現できませんが)。
xHTML DTDを見てください。それらはすべてリストされています。すべての主要なものの簡単なレビューを次に示します。
<br />
<hr />
<img />
<input />
IEのもう1つの自己終了タグの問題は、title要素です。IE(IE7で試したばかり)がこれを見ると、ユーザーに空白のページが表示されます。ただし、「ソースを表示」すると、すべてがそこにあります。
<title/>
XSLTが自己終了タグを生成したときに最初にこれを見ました。
特に、私が書くページの大部分は生成されるか、タグにコンテンツがあるため、これについて詳しく説明するつもりはありません。それらを自己閉鎖させるときに私に問題を与えたことがあるのは、次の2つだけです。
<title/>
このために、私は常に別の終了タグを付けることに頼っています。なぜなら、それがそこにある<head></head>
と、とにかくコードが扱いにくくなることはないからです。
<script/>
これは、私が最近問題に遭遇した大きな問題です。<script/>
何年もの間、スクリプトが外部ソースからのものである場合、私は常に自己終了タグを使用していました。しかし、ごく最近、null フォームに関する JavaScript エラー メッセージを受け取るようになりました。数日間の調査の結果、(おそらく) 問題は、<form>
これがタグの末尾であることを認識していなかったため、ブラウザーがタグに到達しなかったことにあることがわかりました<script/>
。そのため、別の<script></script>
タグにすると、すべてが機能しました。同じブラウザで作成したページごとに異なる理由はわかりませんが、解決策を見つけることができて非常に安心しました!
<hr /> は別のものです