#的含义
- #代表网页中的一个位置,#后面的内容是这个位置的标识符。
页面中设置锚点就是这个原理,点击链接会跳转到#指定的区域<a href="#content">跳转到content区域</a> ... <div id="content">...</div>
- 单页面应用也使用 # 切换页面中的组件,比如 vue 利用 vue-router,点击链接在 router-view 区域显示content组件
路由规则中指定hash路由对应的组件<router-link to="#/content">显示到content</router-link> <router-view></router-view>
{path:"/content",component:Content}
HTTP请求中
- HTTP请求不包含hash,比如访问地址
http://abc.com#jbdb
,实际对服务器发出请求时为http://abc.com
。 - #后面的任何字符都会被认为是位置标识符,比如我用url传递一个颜色参数
http://jquery.com/?color=#fff
,实际对服务器发出的请求是http://jquery.com/?color=
。所以#
在URL中使用时要换成%23
特性
1)改变 # 不触发网页重载。# 后面的内容无关服务器请求,所以不会重新加载
2)改变 # 会在访问历史中记录
3)window.location.hash 可以读写hash值
4)html5 新增 onhashchange 事件监听 hash 值的改变