'name'属性是否被视为<a> anchor tags?</a>的过期

时间:2009-03-03 21:15:47

标签: html visual-studio tags xhtml

Visual Studio不喜欢页面上的锚标记:

  

验证(XHTML 1.0 Transitional):   考虑属性“名称”   过时。一个较新的结构是   推荐使用。

我以这种方式使用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充满了垃圾?

9 个答案:

答案 0 :(得分:20)

您应该使用id属性。以相同的方式工作,您不需要人工<a name=...>,只需

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

答案 1 :(得分:15)

XHTML 1.0中不推荐使用

名称属性 - 您可以采用相同的方式使用id属性,请参阅XHTML规范的Fragment Identifiers中的HTML Compatibility Guidelines

所以你可以简单地使用

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

但请注意,1.0规范建议使用以下内容安全地播放它:

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

但是,您的片段使用XHTML 1.1,其中name属性来自amap元素的entirely removed - 因此您只能使用ID。

答案 2 :(得分:2)

我认为现代方法是使用id属性,该属性将被评估为锚点。例如,如果您更改了

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

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

您仍会将其视为page.html#one

答案 3 :(得分:2)

您还可以链接节标题:

目录

<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

答案 4 :(得分:1)

我认为正确的方法是&lt; a id =“one”&gt;

答案 5 :(得分:1)

是的它已经过时了。您应该使用“id”属性替换。

引用w3schools页面:

  

id属性替换名称属性   HTML 4.01为元素a,applet,frame,iframe,img和map定义了name属性。在XHTML中,不推荐使用name属性。请改用id。

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

答案 6 :(得分:1)

name = attributes用于标记表单中的元素,并且只能用于&lt; form&gt;元素(输入,文本区域,选择等)。对于其他一切,使用ID =。究竟为什么W3C人员认为需要两种不同的命名元素(使用不同的允许字符集)的方法并不为人所知。

答案 7 :(得分:1)

但是http://www.w3.org/TR/html4/struct/links.html#h-12.2.3我在这里读到:“一些较旧的用户代理不支持使用id属性创建的锚点。”所以?

答案 8 :(得分:0)

在您使用的(X)HTML标准不再支持<a name="..."></a>之前 - 而不仅仅是弃用 - 最好同时使用nameid锚点链接到同一页面的一部分。来自W3C's XHTML 1 spec

  

在XML中,以片段结尾的URI引用RFC2396   "#foo"形式的标识符不引用具有属性name="foo"的元素;相反,   它们引用具有定义为ID类型的属性的元素,例如HTML中的id属性   4.许多现有的HTML客户端不支持以这种方式使用ID类型属性,因此完全相同   可以为这两个属性提供值,以确保最大向前和向后   兼容性(例如<a id="foo" name="foo">...</a>)