3

我有一个带有一些<h1 name="Header Name">标签的页面。请注意,name 属性中有一个空格。我想使用锚点,以便可以跳转到标题。我认为如果我添加%20以替换空格它会起作用,但没有。

我目前被淹没了,所以不希望编辑源并重新部署每个标题的 ID 或标题用连字符而不是空格。

<!-- non-working example of what I want -->
<a href="mypage.html#Header%20Name" />  
<h1 title="Header Name">Foo</h1>

我在这里通读了规范,但找不到答案。我也无法通过 Google 或 SO 找到答案。

http://www.w3.org/TR/html4/struct/links.html

有没有办法做到这一点?

4

4 回答 4

2

这是 W3C 规范https://www.w3.org/TR/REC-html40-971218/types.html#h-6.2

IDNAME标记必须以字母 ([A-Za-z]) 开头,后跟任意数量的字母、数字 ([0-9])、连字符 ("-")、下划线 ("_") , 冒号 (":") 和句点 (".")。

没有空间。

于 2018-03-31T01:39:12.573 回答
1

目标锚点应由id属性定义,并且不得包含空格。(HTML5 删除了所有其他约束,但不允许使用空格和空值。旧的 HTML 版本限制更多。)所以:

<h1 id="HeaderName">Foo</h1>

或者,您可以使用a带有属性的元素name,但这既笨拙又过时(在 HTML5 中是禁止的,尽管它仍然有效,但使用得当):

<h1><a name="HeaderName">Foo</a></h1>

您只能name在少数元素上使用该属性,而不是例如 in h1,并且只有在a元素中它才具有充当目标锚点的含义。

title属性可用于任何元素(至少按照 HTML5),但它只是一个建议性标题,与链接无关。

该构造<a href="mypage.html#Header%20Name" />表示一个空a元素,一个可用性噩梦,并且实际上不起作用(它仅被视为元素的开始标记),除非在 XHTML 中使用 XML 文档类型提供服务,您很可能不会这样做。所以不要使用“自关闭”语法,除非有声明内容为空的元素,如果有的话。

于 2013-05-15T20:06:03.893 回答
1

锚点指向nameid属性。它不会找到你的title属性。

使用<h1 id="Header Name">它应该可以工作,但理想情况下你不应该在那里有空格。

于 2013-05-15T19:54:13.473 回答
1

这不是锚标签的工作方式。您可以跳转到锚标记的名称或任何元素的 id。不幸的是,您永远不能跳转到标题属性。您需要修改您不想做的 html,或者包含 javascript 来完成您的要求。

编辑:标准一直说 id 属性不能包含空格,包括 HTML5,它说:

HTML5 摆脱了对 id 属性的额外限制。除了在文档中唯一之外,剩下的唯一要求是该值必须包含至少一个字符(不能为空),并且不能包含任何空格字符。

于 2013-05-15T19:54:13.850 回答