http:// example / resource#和http:// example / resource是否等效?

时间:2014-08-05 23:01:16

标签: http

我看到许多应用程序在希望满足锚标记的href属性时替换“#”。虽然我理解它是如何运作的,但是说形式的网址是否有效:

http://somesite.com/resource.html#

http://somesite.com/resource.html

相同吗?如果没有,#表示空值是什么意思?我经常看到浏览器将其解释为“页面顶部”。

2 个答案:

答案 0 :(得分:1)

主题标签#是仅客户端的片段标识符。符号表示内容中的标识符。该内容可以是text/html或XML。

http://somesite.com/resource.html#这样的URL地址以空片段标识符结尾。空片段标识符在技术上无效,但是有效的URL地址。

浏览器不会使用空片段匹配<div id="">....</div>

相反,浏览器将空片段视为无效标识符。所以它被忽略了。它没有指定页面顶部的点。如果您打开以#空片段结尾的网址,请向下滚动到底部,然后点击刷新。浏览器不会刷新到页面顶部。它将刷新到当前位置。

片段可以在浏览器中用于自定义内容类型。如应用程序或PDF文档。

答案 1 :(得分:0)

specification for URL parsers中的信息摘要:

#会将URL的fragment设置为空字符串,并且实质上告诉解析器需要一个片段字符串(可能指向页面的特定区域)。如果URL在该点结束,则fragment仍然是空字符串,并且浏览器中的结果应该好像URL中甚至不存在#

因此,尾随#并没有指定“页面顶部”,因为它产生的浏览器解析URL的行为应该是没有尾随的#