1、#的涵义

代表网页中的一个位置。井号后面的字符,就是该位置的标识符。比如,

http://www.baidu.com/index.html#one

就代表网页index.html的one位置。浏览器读取这个URL后,会自动滚动one的位置。

怎么为网页位置指定标识符,有两种方法。一是使用锚点,比如,
或者使用id属性,比如

2、HTTP请求不包括#

是用来指导浏览器动作的,对服务器端完全无用。

比如,访问下面的网址
http://www.baidu.com/index.html#one

浏览器实际发出的请求时这样的:
GET /index.html HTTP/1.1

Host:www.baidu.com

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

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

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

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

但是,浏览器实际发出的请求时:
GET /?color= HTTP/1.1

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

http://www.baidu.com/?color=%23fff

4、改变#不触发网页重载

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

比如:从
http:www.baidu.com/index.html#one

改成http://www.baidu.com/index.html#two

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

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

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

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

值得注意的是,上述规则对IE6和IE7不成立,他们不会因为#的改变而增加历史。

6、window.location.hash读取#的值

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

7、onhashchange事件

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

它的使用方法有三种:
window.onhashchange = func;

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

8、Google抓取#的机制

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

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

比如,Google发现新版Twitter的url如下:

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

就会自动抓取另一个URL

http://www.twitter.com/?_esacped_fragment_=/username

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

URL地址中的#的更多相关文章

  1. URL地址中使用中文作为的参数【转】

    原文:http://blog.csdn.net/blueheart20/article/details/43766713 引言: 在Restful类的服务设计中,经常会碰到需要在URL地址中使用中文作 ...

  2. 去除magento多店铺URL地址中的“___from_store=”

    magento 的多店铺功能,大多数情况下是根据语言来进行选择的,当添加了多店铺之后,一般情况下我们会选择开启添加store code到url地址中. Magento 自带的这种功能算是比较不错了,但 ...

  3. 解决URL地址中的中文乱码问题的办法

    解决URL地址中的中文乱码问题的办法 引言: 在Restful类的服务设计中,经常会碰到需要在URL地址中使用中文作为的参数的情况,这种情况下,一般都需要正确的设置和编码中文字符信息.乱码问题就此产生 ...

  4. URL地址中中文乱码详解(javascript中encodeURI和decodeURI方法、java.net.URLDecoder.encode、java.net.URLDecoder.decode)

    引言: 在Restful类的服务设计中,经常会碰到需要在URL地址中使用中文作为的参数的情况,这种情况下,一般都需要正确的设置和编码中文字符信息.乱码问题就此产生了,该如何解决呢?且听本文详细道来. ...

  5. JS动态获取项目名以及获取URL地址中的参数

    在项目当中我们可能会遇到例如改变的项目名称之后,相对应的地址就需要改变,为了减少工作量,将地址当中的项目名这一块写成动态获取的,那么最关键一点就是我要先获取它,再进行操作: 知识点整理,话不多说,直接 ...

  6. 【面试题】如何去掉vue的url地址中的#号?及其原理?

    如何去掉vue的url地址中的#号?及其原理? 点击打开视频讲解更加详细 如何去掉vue的url地址中的#号? import Vue from 'vue'; import VueRouter from ...

  7. JavaScript------获取url地址中的参数

    $(document).ready(function () { //获取地址中的参数(name是字符串) function getParameter(name) { //正则表达式 var reg = ...

  8. URL地址中的转义符

    如果在XML里面存储URL地址可能涉及到转义符的问题 WEB开发中通过问号(?)方式在浏览器地址栏中传值时.浏览器是通过“&”来区分问号后的参数个数的. 如果出现传值参数中带有“&”时 ...

  9. 获取Url地址中参数的3种方法【华为云技术分享】

    获取Url的代码如下:window.location.href; 方法一:原生js(假设已经获得了Url地址) var url = 'https://gitbook.cn/gitchat/geekbo ...

  10. ipv6地址在URL中的表达方式,如何在URL地址中包含ipv6地址

    摘要 本文档定义了在WWW浏览器的URL中执行的文本IPv6地址的格式.在包括Microsoft的IE,Mozilla和Lynx等几个已经被广泛安装使用的浏览器的IPv6版本中,这种格式已经被使用.并 ...

随机推荐

  1. Linux系统命令缩写

    命令缩写:(转) ls:list(列出目录内容) cd:Change Directory(改变目录) su:switch user 切换用户 rpm:redhat package manager 红帽 ...

  2. Android studio的主题颜色修改

    1.选择喜欢的主题 http://color-themes.com/?view=index 好几十款,总有一款你喜欢 2.下载你喜欢的主题,注意是jar文件 .File -> Import Se ...

  3. 微信小程序--兼容

    小程序的功能不断的增加,但是旧版本的微信客户端并不支持新功能,所以在使用这些新能力的时候需要做兼容. 文档会在组件,API等页面描述中带上各个功能所支持的版本号. 可以通过 wx.getSystemI ...

  4. C++11模版元编程

    1.概述 模版元编程(template metaprogram)是C++中最复杂也是威力最强大的编程范式,它是一种可以创建和操纵程序的程序.模版元编程完全不同于普通的运行期程序,它很独特,因为模版元程 ...

  5. 4、一、Introduction(入门):3、System Permissions(系统权限)

    3.System Permissions(系统权限)   Android is a privilege-separated operating system, in which each applic ...

  6. linux中free命令内存分析

    Mem(物理内存分配情况)行 total:表示物理 内存总量 used:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用 free:未被分配的内存 s ...

  7. 同一个tomcat使用不同http端口配置多个web项目

    1.复制 conf/server.xml下的 复制粘贴新的一个Service元素下的所有内容,并修改name为Catalina2,<Service name="Catalina&quo ...

  8. springCloud学习之服务注册和发现

    leader让完一个简单的springcloud的demo,自己之前听说过springcloud微服务,但是没有重视.现在网上查各种资料,但是感觉不怎么样啊,还是不会,明天晚上把代码给他看,天啦,这个 ...

  9. 3.STM32F4按键扫描函数

    //按键处理函数 //返回按键值 //mode:0,不支持连续按;1,支持连续按; //0,没有任何按键按下 //1, KEY0 按下 2, KEY1 按下 3, KEY2 按下 4, WKUP 按下 ...

  10. I - 取石子游戏

    有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后把石子全部取完者为胜者. ...