首页 > 代码库 > hash

hash

转载自百度空间

location.hash

location对象:设置或获取当前URL的信息

使用location对象可以设置或返回URL中的一些信息,一个完整的URL地址的格式为:

协议://主机:端口/路径名称#hash标识?搜索条件

其中,协议是URL的起始部分,用于指定该URL地 址所采用的通信协议,比如http、ftp等;主机是指该URL所对应的服务器的名称;端口用于指定服务器用于通信的端口号,与主机名之间使用冒号隔开; 路径名称是指该URL所对应的网页文件在服务器上的虚拟路径;如果页面中含有锚点连接,可以使用hash标志指定页面中的锚点标志,该标志以“#”开头; 搜索条件是指URL中所含有的查询条件,该查询条件以“?”开头,以“变量名称=值”的形式出现,多个查询条件之间使用连接符“&”连接。比 如:http://upc.edu.cn:8080/wwwroot/ index.html#topicID?id=3876。

利用location对象可以方便地设置或获取URL中的各种信息,本节将详细介绍location对象的一些常用属性和方法。

1.hash属性

【功能说明】设置或获取URL中的锚点名称,如果Web页面中使用的锚点连接,通过设置location对象的hash属性可以方便的跳转到页面中的不同部分。

【基本语法】location.hash

下面的代码演示了如何在网页中使用location对象的hash标志快速定位页面中的 内容。

【实例演示】

<script>

    function getAnchor(str)

    {

      window.location.hash=str;

    }

</script>

<body>

  //创建锚点链接,快速定位网页内容

  <a href="javascript:getAnchor(‘jueju‘);">杜甫 绝句</a>

  <a href="javascript:getAnchor(‘yijianmei‘);">李清照 一剪梅</a>

  <a href="javascript:getAnchor(‘hanghelou‘);">崔颢 黄鹤楼</a>

  //下面定义了3个锚点

  <a name="jueju"><center>绝句</center>

  <!--古诗内容省略,见源代码-->

  </a><br><br><br><br><br>

  <a name="yijianmei"><center>一剪梅</center>

  <!--古诗内容省略,见源代码-->

  </a><br><br><br><br><br>

  <a name="hanghelou"><center>黄鹤楼</center>

  <!--古诗内容省略,见源代码--> 

  </a>

</body>

这段代码在一个网页文件中创建了3个锚点链接, 单击其中任一个链接,程序就会调用getAnchor函数来设置location对象的hash属性为相应的值,以使页面滚动到指定的内容上。运行这段代 码,将窗口缩小并单击链接“崔颢 黄鹤楼”则可以看到图16.18所示的效果。

 

 

location是javascript里边管理地址栏的内置对象,比如location.href就管理页面的url,用location.href=http://www.mamicode.com/url就可以直接将页面重定向url。而location.hash则可以用来获取或设置页面的标签值。比如http://domain/#admin的location.hash="#admin"。利用这个属性值可以做一个非常有意义的事情。 
很多人都喜欢收藏网页,以便于以后的浏览。不过对于Ajax页面来说的话,一般用一个页面来处 
理所有的事务,也就是说,如果你浏览到一个Ajax页面里边有意思的内容,想将它收藏起来,可是地址只有一个呀,下次你打开这个地址,还是得像以往一样不断地去点击网页,找到你钟情的 
那个页面。另外的话,浏览器上的“前进”“后退”按钮也会失效,这于很多习惯了传统页面的用户来说,是一个很大的使用障碍。 
那么,怎么用location.hash来解决这两个问题呢?其实一点也不神秘。 
比如,我的作者管理系统,主要功能有三个:普通搜索、高级搜索、后台管理,我分别给它们分 
配一个hash值:#search、#advsearch、#admin,在页面初始化的时候,通过window.location.hash来判断用户需要访问的页面,然后通过javascript来调整显示页面。比 

如: 
    
var hash;
hash=(!window.location.hash)?"#search":window.location.hash;
window.location.hash=hash;     //调整地址栏地址,使前进、后退按钮能使用
switch(hash){
  case "#search":
    selectPanel("pnlSearch");  //显示普通搜索面板
    break;
  case "#advsearch":
    ...
  case "#admin":
    ...
}



通过window.location.hash=hash这个语句来调整地址栏的地址,使得浏览器里边的“前进”、 
“后退”按钮能正常使用(实质上欺骗了浏览器)。然后再根据hash值的不同来显示不同的面 
板(用户可以收藏对应的面板了),这就使得Ajax页面的浏览趋于传统化了。