浏览器如何处理带有片段标识符的URL

时间:2016-04-28 08:50:55

标签: javascript browser cross-browser

我遇到过一种情况,我想确定浏览器如何处理包含片段标识符的URI,例如Products#A。想象一下,我的网站有两个页面:ProductsFAQs。然后,在每个内部我想使用#导航到特定的HTML元素。所以:

  1. 如果我已经在页面href="Products#A"中,href="#A"Products之间有什么区别?
  2. 如果我在页面FAQs
  3. 放置href="Products#A"中的网址是否始终会触发服务器调用,或者浏览器是否知道它已经在页面Products上并且它没有进行服务器调用?
  4. 我添加/(如href="/products#A")是什么意思?这会强制服务器调用吗?
  5. 这是所有浏览器的标准吗?
  6. 我已经进行了一些测试,但我在这里缺少一些理论。

2 个答案:

答案 0 :(得分:0)

为了回答你的问题,我根据自己的经验来做这些。

  1. 如果我已经在页面href="Products#A"中,href="#A"Products之间有什么区别?

    无。为了安全起见,如果您在不同的页面中,并且使用相同的部分(或相同的源)呈现内容,这可能会有所帮助。

  2. 如果我在页面FAQs中?

    它正常导航到Products并找到id="A"的元素并滚动到那里。

  3. 放置href="Products#A"中的网址是否始终会触发服务器调用,或者浏览器是否知道它已在页面Products上,并且它不会进行服务器调用?

    这是一个客户端调用,没有对URL片段进行服务器调用。

  4. 这是所有浏览器的标准吗?

    我相信。

答案 1 :(得分:0)

如果链接(片段除外)解析为与当前页面相同的URL,则它将在当前页面中导航。

如果它解析为其他页面,则会加载新页面。

如何实际表达相对(或绝对)URL并不重要,只有它解析的内容。