web-dev-qa-db-ja.com

「href」のスペースは有効ですか?

<a href=" #id ">(スペースに注意)は正しい(X)HTMLですか?

<a href="#id">と同じ意味ですか?

9
porton

(X)HTML5では、 a要素 ’の href属性

[…]値は スペースで囲まれている可能性のある有効なURL である必要があります。

アンカーが示唆するように、先頭と末尾のスペースが含まれている場合があります

リンクされたセクションでは、 これらのスペースは削除されます

[…]ユーザーエージェントは、文字列の先頭または末尾にあるすべての スペース文字 を削除する必要があります[…]


実際のURLがスペースで始まる(またはスペースを含む)場合、%20でパーセントエンコードする必要があります。

これらの要素には異なるURL値があります。

<a href=" foo">…</a> <!-- the URL is <foo> -->
<a href="%20foo">…</a> <!-- the URL is < foo>, i.e., <%20foo> -->

これらの要素には同じURL値があります。

<a href="%20foo">…</a>
<a href="%20foo ">…</a>
<a href="%20foo   ">…</a>
<a href=" %20foo">…</a>
<a href="    %20foo">…</a>
<a href="    %20foo    ">…</a>
6
unor

なぜこれをするのですか?誰がそのようなコードを書きますか?これは「」の間にある不要なスペースです。

リテラルスペースはURLで許可されておらず、データの一部ではありません。人間が消費するためにフォーマットするだけです。

空白を削除する必要があります。一部のブラウザでは、スペースとしてレンダリングされます。

スペースは有効です。一方にはスペースがあり、もう一方にはスペースがないため、両方とも異なります。つまり、そのフォーマットまたはリンクは異なります。

0
Josip Ivic

はい、スペースを使用してエラーが発生した場合は、ブラウザによって自動的に修正されますが、別の方法で書き込むことができます:

uRL、つまりhrefはスペースをサポートします。とにかく「%20」に置き換えてください。

<a href="%20#id"> </a>

これにより、「#id」ではなく「#id」が生成されます。

例えば:

<a href="?How%20Are%20You">How are you?</a>
0
HAlex