浏览器如何处理带有片段标识符的 URL
How do browsers handle URLs with a fragment identifier
我 运行 遇到了这样一种情况,我想确定浏览器如何处理包含片段标识符的 URI,例如 Products#A
。假设我的网站有两个页面:Products
和 FAQs
。然后,在每个内部,我想使用 # 导航到特定的 HTML 元素。所以:
- 如果我已经在第
Products
页,href="Products#A"
和 href="#A"
有什么区别?
- 如果我在页面中
FAQs
?
- 像
href="Products#A"
中那样放置 URL 是否总是会触发服务器调用,或者浏览器是否知道它已经在页面 Products
上并且不会进行服务器调用?
- 什么是我加个
/
(比如href="/products#A"
)?这会强制调用服务器吗?
- 这个标准适用于所有浏览器吗?
我已经 运行 进行了一些测试,但我在这里缺少一些理论。
为了回答你的问题,我是根据自己的经验来做的。
如果我已经在第 Products
页,href="Products#A"
和 href="#A"
有什么区别?
没有。只是为了安全起见,如果您在不同的页面中,并且使用相同的部分(或相同的源)呈现内容,这可能会有所帮助。
如果我在页面 FAQs
?
它正常导航到 Products
并找到带有 id="A"
的元素并滚动到那里。
像 href="Products#A"
中那样放置 URL 是否总是触发服务器调用,或者浏览器是否知道它已经在页面上 Products
并且它不进行服务器调用?
那是一个客户端调用,没有对 URL 片段进行服务器调用。
这个标准适用于所有浏览器吗?
我相信。
如果 link(片段除外)解析为与当前页面相同的 URL,则它将在当前页面周围导航。
如果解析到不同的页面,则会加载新页面。
相对(或绝对)URL 的实际表达方式并不重要,重要的是它解析为什么。
我 运行 遇到了这样一种情况,我想确定浏览器如何处理包含片段标识符的 URI,例如 Products#A
。假设我的网站有两个页面:Products
和 FAQs
。然后,在每个内部,我想使用 # 导航到特定的 HTML 元素。所以:
- 如果我已经在第
Products
页,href="Products#A"
和href="#A"
有什么区别? - 如果我在页面中
FAQs
? - 像
href="Products#A"
中那样放置 URL 是否总是会触发服务器调用,或者浏览器是否知道它已经在页面Products
上并且不会进行服务器调用? - 什么是我加个
/
(比如href="/products#A"
)?这会强制调用服务器吗? - 这个标准适用于所有浏览器吗?
我已经 运行 进行了一些测试,但我在这里缺少一些理论。
为了回答你的问题,我是根据自己的经验来做的。
如果我已经在第
Products
页,href="Products#A"
和href="#A"
有什么区别?没有。只是为了安全起见,如果您在不同的页面中,并且使用相同的部分(或相同的源)呈现内容,这可能会有所帮助。
如果我在页面
FAQs
?它正常导航到
Products
并找到带有id="A"
的元素并滚动到那里。像
href="Products#A"
中那样放置 URL 是否总是触发服务器调用,或者浏览器是否知道它已经在页面上Products
并且它不进行服务器调用?那是一个客户端调用,没有对 URL 片段进行服务器调用。
这个标准适用于所有浏览器吗?
我相信。
如果 link(片段除外)解析为与当前页面相同的 URL,则它将在当前页面周围导航。
如果解析到不同的页面,则会加载新页面。
相对(或绝对)URL 的实际表达方式并不重要,重要的是它解析为什么。