Подтвердить что ты не робот

Является ли атрибут 'name' устаревшим для тегов привязки <a>?

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

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

Я использую атрибуты 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 полна дерьма?

4b9b3361

Ответ 1

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

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

Ответ 2

атрибуты имени устарели в 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, где атрибут name был полностью удалено из a и map элементов, поэтому вы можете использовать только идентификатор.

Ответ 3

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

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

к

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

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

Ответ 4

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

Содержание

<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

Ответ 5

Я считаю, что правильный способ сделать это: < a id = "one" >

Ответ 6

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

Указание страницы w3schools:

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

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

Ответ 7

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

Ответ 8

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

Ответ 9

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

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