url中#(hash)的含义

转载 2015年08月26日 10:55:09

hash 属性是一个可读可写的字符串,该字符串是 URL 的锚部分(从 # 号开始的部分)

1 #的涵义

#代表网页中的一个位置。其右面的字符,就是该位置的标识符。比如,

  http://www.example.com/index.html#print

就代表网页index.html的print位置。浏览器读取这个URL后,会自动将print位置滚动至可视区域。(单页应用)

为网页位置指定标识符,有两个方法。一是使用锚点,比如<a name="print"></a>,二是使用id属性,比如<div id="print" >。

2 HTTP请求不包括#

#是用来指导浏览器动作的,对服务器端完全无用。所以,HTTP请求中不包括#。

比如,访问下面的网址,

  http://www.example.com/index.html#print

浏览器实际发出的请求是这样的:

  GET /index.html HTTP/1.1

  Host: www.example.com

可以看到,只是请求index.html,根本没有"#print"的部分。

3 #后的字符

在第一个#后面出现的任何字符,都会被浏览器解读为位置标识符。这意味着,这些字符都不会被发送到服务器端。

比如,下面URL的原意是指定一个颜色值:

  http://www.example.com/?color=#fff

但是,浏览器实际发出的请求是:

  GET /?color= HTTP/1.1

  Host: www.example.com

可以看到,"#fff"被省略了。只有将#转码为%23,浏览器才会将其作为实义字符处理。也就是说,上面的网址应该被写成:

  http://example.com/?color=%23fff

4 改变#不触发网页重载

单单改变#后的部分,浏览器只会滚动到相应位置,不会重新加载网页。

比如,从

  http://www.example.com/index.html#location1

改成

  http://www.example.com/index.html#location2

浏览器不会重新向服务器请求index.html。

5 改变#会改变浏览器的访问历史

每一次改变#后的部分,都会在浏览器的访问历史中增加一个记录,使用"后退"按钮,就可以回到上一个位置。

这对于ajax应用程序特别有用,可以用不同的#值,表示不同的访问状态,然后向用户给出可以访问某个状态的链接。

值得注意的是,上述规则对IE 6和IE 7不成立,它们不会因为#的改变而增加历史记录。

6 window.location.hash读取#值

window.location.hash这个属性可读可写。读取时,可以用来判断网页状态是否改变;写入时,则会在不重载网页的前提下,创造一条访问历史记录。

7 onhashchange事件

这是一个HTML 5新增的事件,当#值发生变化时,就会触发这个事件。IE8+、Firefox 3.6+、Chrome 5+、Safari 4.0+支持该事件。

它的使用方法有三种:

  window.onhashchange = func;

  <body onhashchange="func();">

  window.addEventListener("hashchange", func, false);

对于不支持onhashchange的浏览器,可以用setInterval监控location.hash的变化。

8 Google抓取#的机制

默认情况下,Google的网络蜘蛛忽视URL的#部分。

但是,Google还规定,如果你希望Ajax生成的内容被浏览引擎读取,那么URL中可以使用"#!",Google会自动将其后面的内容转成查询字符串_escaped_fragment_的值。

比如,Google发现新版twitter的URL如下:

  http://twitter.com/#!/username

就会自动抓取另一个URL:

  http://twitter.com/?_escaped_fragment_=/username

通过这种机制,Google就可以索引动态的Ajax内容。

获取url的hash值

获取url的hash值 location是javascript里边管理地址栏的内置对象,比如location.href就管理页面的url,用location.href=url就可以直接将页面重定向u...
  • youweiqingnian_008
  • youweiqingnian_008
  • 2016-07-14 09:55:14
  • 3333

Hash算法系列-具体算法(url hash)

什么是urlhash架构 url hash架构对url进行一次hash算法,然后通过hash结果找到对应的服务器。因为针对单一个url的hash结果是一样的,所以理论上这个url会被永久分配到固定的...
  • yq76034150
  • yq76034150
  • 2011-09-17 23:24:29
  • 5840

通过url中的hash(#)来记录页面状态,用以返回、跳转到特定状态

主要是通过js操作window.location.hash(可读写),加载完页面对hash进行一下判断,然后执行相应的js指令改变页面状态。 最常用的就是一个网页有多个tab,是通过js来控制相应t...
  • jupeizhong
  • jupeizhong
  • 2016-02-26 10:28:06
  • 3839

使用《UrlHash/锚点》解决移动设备中的单页面应用的物理[返回键]带来的困扰

那么解决方案就寄望于Url中带参了。再从百度中可以了解到,Url中出现#有两种作用,一种是跳转到指定锚点,另一种就是传递参数。我们解决当前问题就是用的第二种作用,配合HTML5中新增的window.o...
  • abb_chen
  • abb_chen
  • 2015-11-02 21:27:24
  • 1082

URL中#号(井号)的作用

今天又看到了一篇非常好的来自HTTPWatch的文章,不得不推荐给大家。 1. 井号在URL中指定的是页面中的一个位置 井号作为页面定位符出现在URL中,比如:http://www.htt...
  • xxq_2011
  • xxq_2011
  • 2016-04-22 17:42:24
  • 5442

HTML中的hash(#号)

一、#的涵义 #代表网页中的一个位置。右面的字符就是代表的位置信息:如 http://localhost:8081/cbuild/index.html#first 就代表网页index.ht...
  • limm33
  • limm33
  • 2016-03-21 15:48:30
  • 3858

window.location.hash解析(URL中的?#)

location是javascript里边管理地址栏的内置对象, location对象:设置或获取当前URL的信息 使用location对象可以设置或返回URL中的一些信息,一个完整的URL地址的...
  • gscaiyucheng
  • gscaiyucheng
  • 2013-09-15 22:53:46
  • 3773

Nginx负载均衡-如何自定义URL中的hash key

upstream backend1 {             server 192.168.3.236:555;             server 192.168.3.236:222;  ...
  • my_bai
  • my_bai
  • 2017-09-14 11:04:20
  • 340

将nginx配置成url_hash转发方式

将nginx配置成url_hash转发方式 开源中国 发表于 2014-09-12 20:09:01 所需软件名称及版本: pcre-8.02.tar.gz nginx-0.7.58....
  • samxx8
  • samxx8
  • 2015-07-24 22:42:31
  • 6158

hash.js Javascript/jQuery 解析/监听url hash

1、什么是hashsearch、hashpath       其实那,hashsearch、hashpath这两个词是我自造的。在javascript语言里称url改变该部分不会影响页面重新加载的部...
  • aoshilang2249
  • aoshilang2249
  • 2016-08-16 18:18:49
  • 4470
收藏助手
不良信息举报
您举报文章:url中#(hash)的含义
举报原因:
原因补充:

(最多只允许输入30个字)