Атрибут "name" считается устаревшим для тегов привязки?
Visual Studio не любит теги привязки на странице:
проверка (переходный XHTML 1.0): Имя атрибута '' является устаревший. Новая конструкция рекомендуемый.
Я использую 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 полна дерьма?
9 ответов
вы должны использовать 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
elements-таким образом, вы можете использовать только id.
Я считаю, что современный подход заключается в использовании 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>
Да, он устарел. Вы должны заменить атрибут "id".
цитирование страницы w3schools:
"атрибут id заменяет атрибут name HTML 4.01 определяет атрибут name для элементов a, апплета, фрейма, iframe, img и карты. В XHTML атрибут name устарел. Вместо этого используйте id."
name= атрибуты предназначены для маркировки элементов в форме и могут использоваться только для элементов
но здесь http://www.w3.org/TR/html4/struct/links.html#h-12.2.3 я прочитал это: "некоторые старые агенты пользователей не поддерживают якоря, созданные с атрибутом id."Так?
до <a name="..."></a>
больше не поддерживается (X)стандартом HTML, который вы используете--и не просто устарел--может быть безопаснее использовать оба name
и id
на якорях, ссылающихся на часть той же страницы. От спецификация XHTML 1 W3C:
в XML, URI-ссылки RFC2396 с фрагментом идентификаторы формы
"#foo"
не ссылаться на элементы с атрибутомname="foo"
; а, они ссылаются на элементы с атрибутом определенного типа id, например,id
атрибут в HTML 4. Многие существующие HTML-клиенты не поддерживают использование атрибутов типа ID таким образом, поэтому они идентичны значения могут быть предоставлены для обоих этих атрибутов, чтобы обеспечить максимум вперед и назад совместимость (например,<a id="foo" name="foo">...</a>)
.