Является ли атрибут 'name' устаревшим для <a>якорных тегов? - PullRequest
13 голосов
/ 04 марта 2009

Visual Studio не нравится теги привязки на странице:

Проверка (XHTML 1.0 Transitional): Атрибут 'имя' считается устарели. Более новая конструкция рекомендуется.

Я использую атрибуты name таким образом & hellip;

<?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&hellip;</p>
        <ul>
            <li><a href="#one">Section One</a></li>
            ...
        </ul>
        ...
        <h2><a name="one">Section One</a></h2>
        ...
    </body>
</html>

Есть ли действительно более современный способ сделать это? Или Visual Studio полон дерьма?

Ответы [ 9 ]

20 голосов
/ 04 марта 2009

Вместо этого вы должны использовать атрибут id. Работает так же, и вам не нужен искусственный <a name=...>, а просто

<h2 id="one">Section One</h2>
15 голосов
/ 04 марта 2009

атрибуты имени устарели в XHTML 1.0 - вы можете использовать атрибут id таким же образом, см. Идентификаторы фрагмента в Руководствах по совместимости HTML спецификация XHTML.

Так что вы можете просто использовать

<h2><a id="one">Section One</a></h2>

Но учтите, что спецификация 1.0 рекомендует избегать опасностей, например:

<h2><a name="one" id="one">Section One</a></h2>

Однако ваш фрагмент использует XHTML 1.1 , где атрибут имени был полностью удален из a и map элементов - так что вы можете использовать только идентификатор.

2 голосов
/ 04 марта 2009

Вы также можете добавить ссылку на заголовок раздела:

Содержание

<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>

Источник: http://www.w3.org/TR/REC-html40/struct/links.html

2 голосов
/ 04 марта 2009

Я считаю, что современный подход заключается в использовании атрибута id, который будет оцениваться как якорь. Например, если вы изменили

<h2><a name="one">Section One</a></h2>

до

<h2><a id="one">Section One</a></h2>

Вы бы все равно обратились к нему как page.html#one.

1 голос
/ 24 сентября 2011

Но здесь http://www.w3.org/TR/html4/struct/links.html#h-12.2.3 Я прочитал это: «Некоторые старые пользовательские агенты не поддерживают якоря, созданные с атрибутом id». Так?

1 голос
/ 04 марта 2009
Атрибуты

name = предназначены для маркировки элементов в форме и могут использоваться только для элементов (input, textarea, select и т. Д.). Для всего остального используется ID =. Точно, почему люди W3C думали, что необходимы два разных способа именования элемента (с разными наборами допустимых символов), не совсем понятно.

1 голос
/ 04 марта 2009

Да, это устарело. Вы должны заменить атрибутом "id".

Цитирование страницы w3schools:

" Атрибут id Заменяет Атрибут имени HTML 4.01 определяет атрибут name для элементов a, applet, frame, iframe, img и map. В XHTML атрибут name не рекомендуется. Вместо этого используйте идентификатор."

http://www.w3schools.com/Xhtml/xhtml_syntax.asp

1 голос
/ 04 марта 2009

Я считаю, что правильный способ сделать это -

0 голосов
/ 21 июня 2012

До тех пор, пока <a name="..."></a> больше не поддерживается используемым вами стандартом (X) HTML - и не только устарел - может быть безопаснее использовать как name, так и id на якорях, связанных с частью та же страница. Из спецификации W3C XHTML 1 :

В XML URI-ссылки RFC2396 , заканчивающиеся фрагментом идентификаторы вида "#foo" не ссылаются на элементы с атрибутом name="foo"; скорее, они ссылаются на элементы с атрибутом, определенным как идентификатор типа, например атрибут id в HTML 4. Многие существующие клиенты HTML не поддерживают использование атрибутов типа ID таким образом, поэтому идентичны значения могут быть предоставлены для обоих этих атрибутов, чтобы обеспечить максимальное прямое и обратное совместимость (например, <a id="foo" name="foo">...</a>).

...