XHTMLのすべての有効な自己終了要素(主要なブラウザによって実装されている)は何ですか?


188

XHTMLのすべての有効な自己終了要素(<br/>など)は何ですか(主要なブラウザによって実装されています)?

XHTMLでは技術的には任意の要素を自動的に閉じることができることを知っていますが、すべての主要なブラウザーでサポートされている要素のリストを探しています。<div />などの自己終了要素が原因で発生する問題の例については、http://dusan.fora.si/blog/self-closing-tagsを参照してください。


7
これはXHTMLの目的の1つではありませんか?XHTMLの利点の1つは、XMLジェネレーターを使用してHTMLを生成できることです。どのようなXMLジェネレーターが、どのタグが自動終了できるかを認識しているのはなぜですか?変だ。
エリヤ

6
「不完全」、「不正解」の回答が受け入れられたのは、仮面が明らかに求めている質問に答えたからです。彼は、ブラウザーでレンダリングの問題を引き起こさずに、text / htmlとしてXHTMLを提供するときに、どの要素が自動的に閉じられるかを知りたいと考えていました。多くのページはXHTMLで記述され、技術的に正しくない場合でもtext / htmlとして提供されます。質問はこの説明で改善される可能性がありますが、別の質問(application / xmlとして機能する場合、またはtext / htmlの単一タグに終了/が必要かどうか)に答えることは、この例では役に立ちません。
Nick Lockwood、2011

回答:


180

XHTMLをサポートするすべてのブラウザー(Firefox、Opera、Safari、IE9)は、すべての要素で自己終了構文をサポートします。

<div/><script/><br></br>すべてはうまく動作するはずです。そうでない場合は、不適切にXHTML DOCTYPEが追加されたHTMLがあります

DOCTYPEは、ドキュメントの解釈方法を変更しません。MIMEタイプのみです。

DOCTYPEの無視に関するW3Cの決定

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では完全に機能します(12を参照)。自分の目が信じられない(またはMIMEタイプの設定方法がわからない)場合は、XHTMLプロキシ経由でページを開いてください。

チェックする別の方法は、Firefoxでソースを表示することです。スラッシュが無効な場合は、赤で強調表示されます。

HTML5 / XHTML5では、これは変更されておらず、追加のもないため、区別はさらに明確ですDOCTYPEContent-Type王です。


ちなみに、XHTML仕様では、XHTMLをXMLアプリケーションにすることで、任意の要素を自動的に閉じることができるようになっています

空要素タグは、キーワードEMPTYを使用して宣言されているかどうかに関係なく、コンテンツを持たない要素に使用できます。

XHTML仕様でも明示的に示されています

空の要素がなければなりませんどちらか終了タグかで終わらなければなりません開始タグを持っています/>。たとえば、<br/>または<hr></hr>


7
<script>またはの自己終了バージョンを使用<div>すると、レンダリング/解釈が異なるため、afaikを修正しません。
ZeissS

13
@ZeissS のみの中でtext/html。実際のXHTMLでは、application/xhtml+xml問題なく動作するため送信されます。投票する前に、私がリンクした記事(またはXHTML仕様の付録C)をお読みください。
Kornel 2010年

3
@pornel <script />タグの自己終了タグが古いブラウザで機能することを保証できますか?そうは思いません。信頼できるように聞こえますが、ほとんどの情報は正確ですが、経験上、自己終了スクリプトタグは問題があり、頭痛を与えるのではなく、完全に回避するのが最善であると私は教えています。
メタグラファー、2011年

6
古いブラウザが実際のXHTMLをサポートしていない場合、またはMIMEタイプの設定に失敗した場合、@ Metagrapherは機能しません。ただし、XHTMLをサポートするブラウザー(現時点ではすべての主要なブラウザー)application/xhtml+xmlMIMEタイプを使用すると、それ<script/>が機能することを保証できます。MIMEタイプ。のみ。
Kornel

4
@capdragon:古いブラウザはXHTMLをサポートしていません(「application / xhtml + xml」として提供されます)。XHTMLドキュメントを 'text / html'として送信すると、XHTMLはタグスープとしてレンダリングされます(つまり、ブラウザーはそれをHTMLとして解析し、自己終了タグエラーと見なし、そこから正常に回復します)。オプションは1. HTML 4を記述します(XHTMLをレンダリングするASP.NETを使用する場合のオプションではありません)。とにかく、defはオプションではありません)、3。基本的にタグスープを標準にするHTML 5を記述します:)
Triynko

41

このトピックで非常に注意する必要がある要素の1つは、<script>要素です。外部ソースファイルがある場合は、自分で閉じるときに問題が発生します。それを試してみてください:

<!-- this will not consistently work in all browsers! -->
<script type="text/javascript" src="external.js" />

これはFirefoxでは機能しますが、少なくともIE6では機能しません。私が知っているのは、私が見たすべての要素を熱心に自己閉鎖しているときにこれに遭遇したためです;-)


:MSIEのすべてのバージョンに影響 webbugtrack.blogspot.com/2007/08/...
scunliffe

4
<script>はFirefox 3で自動終了しません
hsivonen '12

まあ、私が遭遇したとき、それはかつてFirefoxで機能していました。どのブラウザでも動作しないようです。おそらくquirksモードでしか動作しないのでしょうか?
エリックファンブラケル

1
それはFirefoxで罰金を作品@erickson場合、あなたはあなたのMIMEタイプの権利を取得します。
Kornel 2010年

WebKitは互換性の理由からこれを続けています。
Yuhong Bao、

35

自己終了構文は、application / xhtml + xmlのすべての要素で機能します。text / htmlのどの要素でもサポートされていませんが、HTML4で「空」またはHTML5で「void」の要素は終了タグをとらないため、スラッシュを付けると、あたかも表示されます。自己終了構文がサポートされました。


33

W3学校の参照サイト

<area />
<base />
<basefont />
<br />
<hr />
<input />
<img />
<link />
<meta />

7
w3schools.com/tags/default.asp私は12個のタグで終わる参照/>"area", "base", "basefont", "br", "col", "frame", "hr", "img", "input", "link", "meta", "param"
MPEN

94
W3schoolsはW3Cとは提携しておらず、W3Cメンバーから送信された修正に応じることさえできないことに注意してください。
Kornel 2010年

2
多くの場合、w3schoolsはほぼ正しいです。空の要素を見つける正確な方法は、実行するgrep EMPTY xhtml1-strict.dtd | sortか、またはgrep EMPTY xhtml1-transitional.dtd | sort
cayhorstmann

1
私見、人々はW3Schoolsをあまりに強く叩きます。それは、あなたが何も知らないトピックについて始めた(!)ときの素晴らしいリソースであることが証明されています。
Priidu Neemre

28

より良い質問は、コードに影響を与えることなく、HTMLモードでも自動クローズできるタグは何でしょうか?回答:空のコンテンツ(無効)があるもののみ。HTML仕様によると、次の要素は無効です。

area, base, br, col, embed, hr, img, input, keygen, link, menuitem, meta, param, source, track, wbr

古いバージョンの仕様もリストされていcommandます。さらに、さまざまなソースによると、次の廃止または非標準のタグは無効です。

basefont, bgsound, frame, isindex


10

これが誰かを助けることを願っています:

<base />
<basefont />
<frame />
<link />
<meta />

<area />
<br />
<col />
<hr />
<img />
<input />
<param />

5

何について<meta><link>?なぜ彼らはそのリストに載っていないのですか?

大まかに言って、コンテンツを持つように意図されている要素を自動的に閉じないでください。遅かれ早かれブラウザの問題が確実に発生するためです。

以下のような自然に自己終了しているもの、<br>とは<img>、明らかです。存在しないもの...自己閉鎖しないでください!


4

前回チェックしたとき、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がこれを表現できない場合でも)。


4

xHTML DTDが表示されるはずです。それらはすべてリストされています。ここにすべての主要なものの簡単なレビューがあります:

<br />
<hr />
<img />
<input />

1
マークアップを修正およびクリーンアップしました。このページのリンクに注意してください。読み込みに時間がかかります。
e-satis、2009

4

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

IEのもう1つの自己終了タグの問題は、title要素です。IE(IE7で試したところ)がこれを見ると、ユーザーに空白のページが表示されます。ただし、「ソースを表示」すると、すべてがそこにあります。

<title/>

XSLTが自己終了タグを生成したときに最初にこれを確認しました。


Chromiumは<title/>タグも好きではありません。
uınbɐɥs

2

特に私が書くページの大部分は生成されているか、タグにコンテンツが含まれているため、これについて詳しく説明するつもりはありません。それらを自動閉鎖するときに私にトラブルを与えた唯一の2つは:

<title/>

このため、私は単に別の終了タグを常に与えることに頼っていました。なぜなら、<head></head>それがそこにあると、それはあなたのコードをとにかく操作するのに本当に厄介なものにするわけではないからです。

<script/>

これは私が最近問題に遭遇した大きな問題です。何年もの間<script/>、スクリプトが外部ソースからのものであるときは常に自己終了タグを使用していました。しかし、私はごく最近、nullフォームに関するJavaScriptエラーメッセージの受信を開始しました。数日の調査の結果、問題は(おそらく)ブラウザが<form>タグに到達しなかったことが原因であることがわかりました<script/>。だから別々にしたとき<script></script>タグにしたとき、すべてがうまくいった。同じブラウザで作成したさまざまなページでなぜ違うのかわかりませんが、解決策を見つけることは大きな安心でした!


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.