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. Shell脚本编程(二):shell变量

    定义变量 定义变量时,变量名不加美元符号($,PHP语言中变量需要),如: your_name="runoob.com" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程 ...

  2. centos 7 配置tomcat开机启动

    1. tomcat 需要增加一个pid文件 在tomca/bin 目录下面,增加 setenv.sh 配置,catalina.sh启动的时候会调用,同时配置java内存参数. #add tomcat ...

  3. An SPI class of type org.apache.lucene.codecs.PostingsFormat with name 'Lucene50' does not exist. You need to add the corresponding JAR file supporting this SPI to your classpath. The current classp

    背景介绍: 当ES中guava库与hive等组件的库冲突时,对Elasticsearch库进行shade,relocate解决库冲突问题. 当使用"org.apache.maven.plug ...

  4. Spring Java-based容器配置

    多年以来,Spring大量的XML配置及复杂的依赖管理饱受非议. 为了实现免XML的开发体验.Spring加入了新的配置注解以支持Java Config开发模式,当中最重要的注解就是@Configur ...

  5. Git -- 搭建git服务器

    在远程仓库一节中,我们讲了远程仓库实际上和本地仓库没啥不同,纯粹为了7x24小时开机并交换大家的修改. GitHub就是一个免费托管开源代码的远程仓库.但是对于某些视源代码如生命的商业公司来说,既不想 ...

  6. Tomcat容器做到自我保护,设置最大连接数(服务限流:tomcat请求数限制)

    http://itindex.net/detail/58707-%E5%81%87%E6%AD%BB-tomcat-%E5%AE%B9%E5%99%A8 为了确保服务不会被过多的http长连接压垮,我 ...

  7. python利用lxml读写xml格式文件

    之前在转换数据集格式的时候需要将json转换到xml文件,用lxml包进行操作非常方便. 1. 写xml文件 a) 用etree和objectify from lxml import etree, o ...

  8. 面向切面编程AOP,一些通用装饰器

    1.一些装饰器,可以减少重复编写.比较常用的. 用的时候函数上面加上装饰器就可以.这是一些装饰器,加在函数或者方法上,减少了很多重复代码. 除此之外工作中也用一些mixin类大幅减少代码. impor ...

  9. C#基础系列——语法

    1.C#是这样开始的: 函数入口:static void  Main(String [] args){} 2.Hello  World 例子 using system;--------导入命名空间,里 ...

  10. 显示windows的音频的输入输出设备

    #include "stdafx.h" /************************音频的输入输出设备**************************/ #include ...