前言
此前对锚点链接只知道一些简单的使用,但对更多的用法和其处理流程不太了解。为此阅读了一下HTML标准文档,找到了一些答案并记录在下方。(本人英语水平有限,内容仅供参考,详情可阅读原文)。
流程描述
- 截取
href
属性值中,#
后面的字符子串赋值给fragment
。例如,对于href="#string"
而言,fragment="string"
。 - 如果
fragment
为空字符串,则定位到页面顶部,返回。 - 对dom树进行深搜(也可以理解为,对代码从上到下进行搜索),如果有元素的
id
等于
fragment
,则定位到该元素,返回。 - 对dom树进行深搜,如果某个
<a>
的name
等于fragment
,则定位到该元素,返回。(注:第3步和第4步不是同时进行的,第3步不满足条件,才进行第4步。) - 如果
fragment
等于"top"(不区分大小写)
,则定位到页面顶部,返回。 - 对
fragment
进行utf-8解码,得到decodedFragment
,对decodedFragment
重复上述第3-5步。 - 不改变定位。
值得注意的一点是,锚点链接也识别name
,但只对<a>
有效。