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

StackOverflow https://stackoverflow.com/questions/608222

Вопрос

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

Проверка (переходный вариант XHTML 1.0):Атрибут 'name' считается устаревшим.Рекомендуется использовать более новую конструкцию .

Я использую 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&hellip;</p>
        <ul>
            <li><a href="#one">Section One</a></li>
            ...
        </ul>
        ...
        <h2><a name="one">Section One</a></h2>
        ...
    </body>
</html>

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

Для

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

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top