url中#(hash)的含义hash属性是一个可读可写的字符串,是URL的锚点部分(#开头的部分)1。"#"表示网页中的位置。右边的字符是位置的标识符。例如:http://www.example.com/index.html#print表示网页index.html的打印位置。浏览器读取URL后,会自动将打印位置滚动到可见区域。(单页应用程序)有两种方法可以指定网页位置的标识符。一种是使用锚点,如,另一种是使用id属性,如。2、HTTP请求不包含'#''#'用于引导浏览器的动作,对服务器完全无用。因此,#不包含在HTTP请求中。比如访问下面的网址,http://www.example.com/index.html#print浏览器实际发送的请求是这样的:GET/index.htmlHTTP/1.1Host:www.example.com可以看到,只是请求index.html,根本没有“#print”部分。3.#之后的字符在第一个#之后出现的任何字符都会被浏览器解释为位置标识符。这意味着,这些字符都不会发送到服务器。比如下面这个URL的本意是指定一个颜色值:http://www.example.com/?color=#fff然而浏览器实际发送的请求是:GET/?color=HTTP/1.1Host:www.example.com可以看到省略了“#fff”。只有当#被转换为%23时,浏览器才会将其视为文字字符。也就是说,上面的URL应该写成:http://example.com/?color=%23fff4。更改#donottriggerwebpagereloadjustchange#之后的部分,浏览器只会滚动到相应的位置,不会Reload网页。例如,从http://www.example.com/index.html#location1更改为http://www.example.com/index.html#location2浏览器将不会从服务器重新请求index.html。5.更改#将更改浏览器的访问历史记录。每修改一次#后面的部分,浏览器的访问历史就会增加一条记录。使用“后退”按钮返回到之前的位置。这对于ajax应用程序特别有用。可以用不同的#值来表示不同的访问状态,然后给用户一个指向某个状态的链接。值得注意的是,上述规则不适用于IE6和IE7,它们不会因为#的改变而增加历史记录。6.window.location.hash读取#valuewindow.location.hash这个属性是可读可写的。阅读时,可用于判断网页状态是否发生变化;写入时,它会在不重新加载网页的情况下创建访问历史记录。7.Onhashchange事件这是HTML5中新增的事件,当#的值发生变化时,会触发该事件。IE8+,Firefox3.6+,Chrome5+,Safari4.0+支持该事件。共有三种使用方式:window.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内容。