< a>の 'name'属性は古いと見なされますか?アンカータグ?
-
03-07-2019 - |
質問
Visual Studioはページ上のアンカータグを好みません:
検証(XHTML 1.0 Transitional): 属性「名前」が考慮されます 時代遅れ。新しいコンストラクトは 推奨。
この方法で name
属性を使用しています…
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://www.w3.org/MarkUp/SCHEMA/xhtml11.xsd" xml:lang="en">
...
<body>
...
<p>On this page…</p>
<ul>
<li><a href="#one">Section One</a></li>
...
</ul>
...
<h2><a name="one">Section One</a></h2>
...
</body>
</html>
これを行うための本当に現代的な方法はありますか?それとも、Visual Studioはがらくたでいっぱいですか?
解決
代わりに id
属性を使用する必要があります。同じように機能し、人工的な&lt; a name = ...&gt;
は必要ありませんが、単純に
<h2 id="one">Section One</h2>
他のヒント
name属性は、 XHTML 1.0 で非推奨です-同じでid属性を使用できますただし、
したがって、単純に使用できます
<h2><a id="one">Section One</a></h2>
ただし、1.0仕様では、次のようなもので安全にプレイすることを推奨しています。
<h2><a name="one" id="one">Section One</a></h2>
ただし、フラグメントは XHTML 1.1 を使用します。name属性は a
および map から完全に削除
code>要素-したがって、idのみを使用できます。
現代のアプローチは、アンカーとして評価される id
属性を使用することだと思います。たとえば、変更した場合
<h2><a name="one">Section One</a></h2>
to
<h2><a id="one">Section One</a></h2>
引き続き page.html#one
としてアドレスします。
セクションヘッダーにリンクすることもできます:
目次
<P>
<A href="#section1">Introduction</A><BR>
<A href="#section2">Some background</A><BR>
<A href="#section2.1">On a more personal note</A><BR>
...the rest of the table of contents...
...the document body...
<H2 id="section1">Introduction</H2>
...section 1...
<H2 id="section2">Some background</H2>
...section 2...
<H3 id="section2.1">On a more personal note</H3>
...section 2.1...
[...]
</P>
適切な方法は&lt; a id =&quot; one&quot;&gt;であると信じています
はい、古いです。 &quot; id&quot;と置き換える必要があります。属性。
w3schoolsページの引用:
&quot; id属性はname属性を置き換えます HTML 4.01は、要素a、アプレット、フレーム、iframe、img、およびmapのname属性を定義しています。 XHTMLでは、name属性は非推奨です。代わりにidを使用してください。&quot;
name =属性は、フォーム内の要素にラベルを付けるためのもので、&lt; form&gt;でのみ使用できます。要素(入力、テキストエリア、選択など)。それ以外の場合は、ID =が使用されます。 W3Cの人々が(許容文字の異なるセットで)要素に名前を付ける2つの異なる方法が必要だと思った正確な理由は、すぐにはわかりません。
ただし、 http://www.w3。 org / TR / html4 / struct / links.html#h-12.2.3 これを読みました:&quot;一部の古いユーザーエージェントはid属性で作成されたアンカーをサポートしていません。&quot;だから?
&lt; a name =&quot; ...&quot;&gt;&lt; / a&gt;
は、廃止されただけでなく、使用している(X)HTML標準ではサポートされなくなりました-同じページの一部にリンクしているアンカーで name
と id
の両方を使用するのが最も安全かもしれません。 W3CのXHTML 1仕様から:
XMLでは、フラグメントで終わるURI参照 RFC2396
&quot;#foo&quot;
という形式の識別子は、属性name =&quot; foo&quot;
を持つ要素を参照しません。むしろ、 タイプIDとして定義された属性を持つ要素を参照します。たとえば、HTMLのid
属性 4.多くの既存のHTMLクライアントは、この方法でのIDタイプ属性の使用をサポートしていないため、同一です これらの属性の両方に値を指定して、最大の前方および後方を確保することができます 互換性(例:&lt; a id =&quot; foo&quot; name =&quot; foo&quot;&gt; ...&lt; / a&gt;)
。