Ответ 1
Вместо этого вы должны использовать атрибут id
. Работает так же, и вам не нужен искусственный <a name=...>
, а просто
<h2 id="one">Section One</h2>
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…</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>
атрибуты имени устарели в 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>
Я считаю, что правильный способ сделать это: < a id = "one" >
Да, это устарело. Вы должны заменить атрибут id.
Указание страницы w3schools:
"Атрибут id заменяет имя Атрибут HTML 4.01 определяет атрибут имени для элементов a, applet, frame, iframe, img и map. В XHTML атрибут name устарел. Вместо этого используйте идентификатор.
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 spec:
В XML URI-ссылки RFC2396, которые заканчиваются фрагментом идентификаторы формы
"#foo"
не относятся к элементам с атрибутомname="foo"
; скорее, они ссылаются на элементы с атрибутом, определенным как идентификатор типа, например, атрибутid
в HTML 4. Многие существующие HTML-клиенты не поддерживают использование атрибутов типа ID таким образом, поэтому идентичные значения могут быть предоставлены для обоих этих атрибутов, чтобы обеспечить максимальный вперед и назад совместимость (например,<a id="foo" name="foo">...</a>)
.