URL地址中的#
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地址中的#的更多相关文章
- URL地址中使用中文作为的参数【转】
原文:http://blog.csdn.net/blueheart20/article/details/43766713 引言: 在Restful类的服务设计中,经常会碰到需要在URL地址中使用中文作 ...
- 去除magento多店铺URL地址中的“___from_store=”
magento 的多店铺功能,大多数情况下是根据语言来进行选择的,当添加了多店铺之后,一般情况下我们会选择开启添加store code到url地址中. Magento 自带的这种功能算是比较不错了,但 ...
- 解决URL地址中的中文乱码问题的办法
解决URL地址中的中文乱码问题的办法 引言: 在Restful类的服务设计中,经常会碰到需要在URL地址中使用中文作为的参数的情况,这种情况下,一般都需要正确的设置和编码中文字符信息.乱码问题就此产生 ...
- URL地址中中文乱码详解(javascript中encodeURI和decodeURI方法、java.net.URLDecoder.encode、java.net.URLDecoder.decode)
引言: 在Restful类的服务设计中,经常会碰到需要在URL地址中使用中文作为的参数的情况,这种情况下,一般都需要正确的设置和编码中文字符信息.乱码问题就此产生了,该如何解决呢?且听本文详细道来. ...
- JS动态获取项目名以及获取URL地址中的参数
在项目当中我们可能会遇到例如改变的项目名称之后,相对应的地址就需要改变,为了减少工作量,将地址当中的项目名这一块写成动态获取的,那么最关键一点就是我要先获取它,再进行操作: 知识点整理,话不多说,直接 ...
- 【面试题】如何去掉vue的url地址中的#号?及其原理?
如何去掉vue的url地址中的#号?及其原理? 点击打开视频讲解更加详细 如何去掉vue的url地址中的#号? import Vue from 'vue'; import VueRouter from ...
- JavaScript------获取url地址中的参数
$(document).ready(function () { //获取地址中的参数(name是字符串) function getParameter(name) { //正则表达式 var reg = ...
- URL地址中的转义符
如果在XML里面存储URL地址可能涉及到转义符的问题 WEB开发中通过问号(?)方式在浏览器地址栏中传值时.浏览器是通过“&”来区分问号后的参数个数的. 如果出现传值参数中带有“&”时 ...
- 获取Url地址中参数的3种方法【华为云技术分享】
获取Url的代码如下:window.location.href; 方法一:原生js(假设已经获得了Url地址) var url = 'https://gitbook.cn/gitchat/geekbo ...
- ipv6地址在URL中的表达方式,如何在URL地址中包含ipv6地址
摘要 本文档定义了在WWW浏览器的URL中执行的文本IPv6地址的格式.在包括Microsoft的IE,Mozilla和Lynx等几个已经被广泛安装使用的浏览器的IPv6版本中,这种格式已经被使用.并 ...
随机推荐
- layui table 根据条件改变更换表格颜色 高亮显示 数据筛选
请问想让当layui表格的某个字段符合某个条件的时候,让该行变颜色.这样可以实现么. layui数据表格怎么更换表格颜色 layui表格 通过判断某一行中的某一列的值进行设置这一行的颜色 LayUI之 ...
- 扩展layui中的自带字体图标
项目中,虽然layui的字体图标库中已经有了1000多个图标了,但是也有时候不能满足我们自定义图标的需求,所以需要进行自定义,具体步骤如下: 1.在iconfont上找到自己喜欢的图标,也可以上传ui ...
- Git应用实践(二)
[时间:2017-08] [状态:Open] [关键词:Git,git diff, git apply, git format-patch, git am, git log] 0-背景 距上次总结Gi ...
- ArcGIS Runtime SDK for iOS之符号和渲染
符号定义了图形外观的非地理方面.它包括了图形的颜色.线宽.透明度等等.ArcGIS Runtime SDK for iOS包含了许多符号类,其中的每个类可以让你以独特的方式指定符号.每个符号的类型也是 ...
- BigDecimal提供了8种舍入方式
BigDecimal提供了8种舍入方式 1.ROUND_UP:舍入远离零的舍入模式.在丢弃非零部分之前始终增加数字(始终对非零舍弃部分前面的数字加1).注意,此舍入模式始终不会减少计算值的大小. 2. ...
- openssl 非对称加密DSA,RSA区别与使用介绍
在日常系统管理工作中,需要作一些加解密的工作,通过openssl工具包就能完成我们很多需求! 1. openssl RSA 加解密 RSA是基于数论中大素数的乘积难分解理论上的非对称加密法,使用公私钥 ...
- android 监听动画对象后不能播放动画
采用监听 AnimationListener 发现不能播放动画了. 解决办法: 将动画的启动方式:animation.startnow去掉,改为如下即可 view.startAnimation(an ...
- Java知多少(13)流程控制
Java流程控制的语法与 C/C++ 类似,也有 if...else.while.do...while.for.switch...case等,这里不再讲述具体语法,仅举例说明. 输出九九乘法表(右上三 ...
- Go指南练习_映射
源地址 https://tour.go-zh.org/moretypes/23 一.题目描述 实现 WordCount.它应当返回一个映射,其中包含字符串 s 中每个“单词”的个数.函数 wc.Tes ...
- centos7 修改root密码方式
1 - 在启动grub菜单,选择编辑选项启动 2 - 按键盘e键,来进入编辑界面 3 - 找到Linux 16的那一行,将ro改为rw init=/sysroot/bin/sh 4 - 现在按下 Co ...