1.#的含义

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

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

就是代表index.html中的print位置。浏览器会自动把print位置滚动到页面可视区域内。

设置方法:

step1:设置一个锚点<a href="#print">定位到print位置</a>

step2:在页面需要定位的内容加上id="print"。例如:<div id="print"></div>

测试:step1设置的锚点,step2中id为print的内容会滚动到页面顶端(可观察滚动条的距离)。同时,页面的url末端中会出现#print的哈希值。

2.HTTP请求不包含#

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

比如,访问下面的网址:

http://jquery.com#hello

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

可以看到,只是请求了http://jquery.com,没有请求"#hello"的部分。

3.#后面的字符

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

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

http://jquery.com/?color=#fff

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

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

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

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

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

浏览器不会重新向服务器请求页面。

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+支持该事件。

它的使用方法有三种:

1.window.onhashchange = func;

2.<body οnhashchange="func();">

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

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内容。

转载于:https://www.cnblogs.com/joyho/articles/4430148.html

URL中的hash(井号)相关推荐

  1. vue 输入网址后,url中自动出现井号#,如何去除

    问题描述: 解决方法: 1.打开 2.找到 3.删除Hash 4.成功

  2. laravel+vue.js的学习以及为什么浏览器中要有井号“#”

    一.前言 一直想找机会学一下vue,但是go还没来得及学,laravel的源码还没看完,学习vue更是遥遥无期.幸好新公司的项目是用laravel+vue编写的,这才有幸接触到vue. 但是我在观看项 ...

  3. C语言(C++语言)中##(两个井号)和#(一个井号)用法[转]

    C语言(C++语言)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念).下面对常遇到的宏的使用问题做了简单总结. 关 于#和## 在C语言的宏中,#的功能是将其后面的宏参数进 ...

  4. c语言井号字符什么意思,关于c语言宏定义中的单#(井号)和双#(井号)

    看了这篇文章后了解了,但是文章中的例子比较特别,我在这里加个注释好了. 单井号就是将后面的 宏参数 进行字符串操作,就是将后面的参数用双引号引起来 双井号就是用于连接. 比如文章中的例子: #defi ...

  5. c语言输入字符串以井号结束,C语言中两个井号“##”和一个井号#的使用方法[转]...

    最近看了一些dsp的库函数,发现了一些使用##的宏定义,以前没有用到过,后来差了些资料,学习了##的用法. 例如下面的语句: #define  CSL_FMK(PER_REG_FIELD, val) ...

  6. 【原创】【C语言】‘#’(井号)和‘##’(双井号)用法

    一,这是个什么玩意 有时候在宏定义或打印语句中经常见到#井号或者##双井号,看着很牛逼的用法 二,有毛用啊 #:表示字符串化:##:表示concatenate(连接) 具体就是,#号的功能是将其后面的 ...

  7. oracle 列 显示井号,“在excel打完字后为什么显示一堆井号#######?该怎么办?“excle表显示井号...

    Excel单元格中的数据显示为井号(#)是怎么回事 excel表格,单元格格式为日期的,如果单元格列宽过小,显示的内容就会变为"#"解决方法:增大列宽 在excel打完字后为什么显 ...

  8. URL中#号(井号)的作用

    1. 井号在URL中指定的是页面中的一个位置 井号作为页面定位符出现在URL中,比如:http://www.httpwatch.com/features.htm#print ,此URL表示在页面fea ...

  9. URL 链接中 井号#、问号?、连接符 分别有什么作用?

    #,井号:表示网页中的一个位置,被称之为锚点,常用于某个网页间不同位置的跳转,简单的说就是在一个网页中,URL 不变的情况下,通过添加"#buy"的字符在 URL 最后可以跳转到当 ...

最新文章

  1. U3D笔记11:47 2016/11/30-15:15 2016/12/19
  2. 医疗器械软件网络安全法规和标准概述(附所有标准)
  3. mysql数据库小系统_Mysql数据库基础小实例 学员管理系统菜单
  4. Maven 进行多环境配置,使用profile文件进行配置
  5. 201671010417 金振兴 实验十四 团队项目评审课程学习总结
  6. 基于YUM安装与源码编译或二进制多实例安装Mariadb,mysql
  7. 最新教师计算机测试题,信息技术教师基本功测试题
  8. 我的世界光影mod怎么用_《我的世界》RTX beta 版视频体验:仿佛打破了次元壁
  9. GB35114---聊聊SM2签名格式
  10. Adolescent Suicidal Risk Assessment in Clinician-Patient Interaction
  11. 杂记-----------
  12. 前端数据可视化之高德地图
  13. 【个人研究】21世纪西方运用脑电(EEG)的音乐研究动向分析(二)
  14. ad如何绘制拼版_Altium Design PCB拼板完整教程,这样讲就明白了!
  15. 背景的样式(雪碧图)
  16. nginx代理常见问题
  17. 【前端工程化】配置package.json中scripts命令脚本,新手必学
  18. 整站下载工具httrack使用 MAC
  19. cmd界面英文变中文
  20. bypass csp学习

热门文章

  1. ajax无刷新方式对form表单进行赋值!
  2. 记一次小的51CTO聚会
  3. Windows7中Prefetch预读文件技术详解
  4. 基于自然语言的软件工程和程序设计(下)
  5. Javascript创建节点
  6. win8和win8.1动态绑定数据到ListView
  7. 基于Lua脚本语言的嵌入式UART通信的实现
  8. golang常用技巧
  9. strace命令学习
  10. ARM汇编:加载和存储指令集(六大类)---LDR(ADR)、LDRB、LDRH、STR、STRB、STRH