学习分享——location.hash的用法「建议收藏」

学习分享——location.hash的用法「建议收藏」【学习分享】location.hash的用法location对象:设置或获取当前URL的信息使用location对象可以设置或返回URL中的一些信息,一个完整的URL地址的格式为:协议://主机:端口

大家好,又见面了,我是你们的朋友全栈君。

学习分享】location.hash的用法

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

使用location对象可以设置或返回URL中的一些信息,一个完整的URL地址的格式为:
协议://主机:端口/路径名称?搜索条件#hash标识
其中,协议是URL的起始部分,用于指定该URL地 址所采用的通信协议,比如http、ftp等;主机是指该URL所对应的服务器的名称;端口用于指定服务器用于通信的端口号,与主机名之间使用冒号隔开; 路径名称是指该URL所对应的网页文件在服务器上的虚拟路径;如果页面中含有锚点连接,可以使用hash标志指定页面中的锚点标志,该标志以“#”开头; 搜索条件是指URL中所含有的查询条件,该查询条件以“?”开头,以“变量名称=值”的形式出现,多个查询条件之间使用连接符“&”连接。比如http://www.webtest.com/help/index.php?act=detail2#h1

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

 

1.hash属性
【功能说明】设置或获取URL中的锚点名称,如果Web页面中使用的锚点连接,通过设置location对象的hash属性可以方便的跳转到页面中的不同部分。
【基本语法】location.hash
下面的代码演示了如何在网页中使用location对象的hash标志快速定位页面中的 内容。
<html>
<head><title>home</title></head>
<body>
<a href=”#t1″>home</a>
<a href=”#t2″>contact</a>
<a href=”#t3″>about</a>
<a name=”t1″>………</a>
<a name=”t2″>………</a>
<a name=”t3″>………</a>
</body>
</html>

当点击home链接时页面会自动跳转到name=”t1″的位置,同理点击contact,about时页面会定位到name=”t2″或name=”t3″的位置。

 

2.hash属性在富Ajax页面中的应用
很多Web应用采用Ajax技术来增强Web体验,富Ajax应用具有如下优点:
1)减少对服务器端的连接并减轻服务器端的带宽压力,页面中的图片,脚本,样式只会被下载一次。
2)减少加载延迟,用户没有必要不断重新加载页面,所有的Ajax请为都发生在当前页面中。
当然使用Ajax技术也有很明显的缺陷。对于Ajax页面来说的话,一般用一个页面来处理所有的事务,也就是说,如果你浏览到一个Ajax页面里边有意思的内容,想将它收藏起来,可是地址只有一个呀,下次你打开这个地址,还是得像以往一样不断地去点击网页,找到你想要的那个页面。另外的话,浏览器上的“前进”“后退”按钮也会失效,这于很多习惯了传统页面的用户来说,是一个很大的使用障碍。
那么,怎么用location.hash来解决这两个问题呢?其实一点也不神秘。如下例中,通过hash调整地址栏的地址,使得浏览器里边的“前进”、“后退”按钮能正常使用(实质上欺骗了浏览器)。然后再根据hash值的不同来显示不同的内容,这就使得Ajax页面的浏览趋于传统化了。
——————————————————————————————————
hash.html
——————————————————————————————————
<html>
<head>
<title>location hash</title>
</head>
<body>
<!– Just a simple navigation —>
<ul id=”navigation”>
<li><a href=”index.html”>Home</a></li>
<li><a href=”about.html”>About</a></li>
<li><a href=”service.html”>Service</a></li>
<li><a href=”contact.html”>Contact</a></li>
</ul>
<div id=”content”></div>
<script type=”text/javascript” src=”http://www.google.com/jsapi”></script>
<script>
google.load(“jquery”,”1.3.2″,{uncompressed:true});
</script>
<script>
$(document).ready(function(){
     if(window.location.hash!=””){

        var hashpage = window.location.hash.split(“#”);

        $(“#navigation a”).each(function() {

              if($(this).attr(‘href’) == hashpage[1]) {
                   $(this).addClass(“curr”);
                   return false;
              }
         });
         $(“#content”).load(hashpage[1]);
     }
     //navigation
     $(“#navigation a”).unbind(“click”).click(function(){
        var page = $(this).attr(“href”);
        $(“#content”).load(page);
        window.location.hash=”#”+page;
        return false;
     });
});

</script>
</body>
</html>
——————————————————————————————————
about.html
——————————————————————————————————
<html>
<head>
<title>about</title>
</head>
<body>
<div id=”content”>
hi, my name is bill Zhan.
</div>
</body>
</html>
——————————————————————————————————
contact.html
——————————————————————————————————
<html>
<head>
<title>contact</title>
</head>
<body>
<div id=”content”>
tel:15986773928
</div>
</body>
</html>
——————————————————————————————————
home.html
——————————————————————————————————
<html>
<head>
<title>home</title>
</head>
<body>
<div id=”content”>
Welcome to the Harray Port World!
</div>
</body>
</html>
——————————————————————————————————
service.html
——————————————————————————————————
<html>
<head>
<title>service</title>
</head>
<body>
<div id=”content”>
Go,Go,Go.
</div>
</body>
</html>

——————————————————————————————————

 

3.利用hash技术解决以上提到的Ajax的两个缺陷比较成熟的应用举例
1)Gmail
Gmail可以说是把Ajax技术用到了极致,Google采用hash来解决Ajax技术的两大缺陷。

2)Greader
Google Reader同样采用hash来解决Ajax技术的两大缺陷。通过分析URL来异步加载页面元素。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/154364.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月4日 下午2:36
下一篇 2022年7月4日 下午2:46


相关推荐

  • AArch64教程第一章

    AArch64教程第一章AArch64教程第一章AArch64是一个新的64位模式,它是ARMv8架构下的一部分,它于2011年随着ARM发布。它被逐步部署于智能手机和服务器。所以我认为现在学习一点关于此架构的知识是比较好的。硬件目前,有ARMv6/ARMv7的单板电脑是比较容易获得的,其中最流行的一个选择是树莓派。相反,支持64位ARMv8模式的单板电脑就没有那么多了,但是它们最近也慢慢变得流行了起来。例如,Pine64,ODROID-C2,Dragonboard410c,等等。它们中的任何一种都可以做64位开发,

    2022年10月16日
    5
  • MySQL中日期时间类型与格式化「建议收藏」

    MySQL中日期时间类型与格式化「建议收藏」Mysql中常用的几种时间类型有:date、datetime、time、year、timestamp;Datetime:时间日期型,格式是YYYY-mm-ddHH:ii:ss,表示的范围是从1000到9999。但是有零值,0000-00-0000:00:00;Date:日期,就是datetime中的date部分;Time:时间(段),指定的某个区间之间,从-时间到+时间(有负时间表示);T

    2022年4月30日
    55
  • ajax技术介绍

    ajax技术介绍ajax 技术

    2026年3月17日
    2
  • ftp客户端软件,Windows端有哪些ftp客户端软件值得推荐?3款ftp客户端软件

    ftp客户端软件,Windows端有哪些ftp客户端软件值得推荐?3款ftp客户端软件对于 ftp 客户端软件 你了解多少 其实一般人也接触不到这种软件 ftp 客户端软件主要是针对从事网站管理的工作人员比较有利的一款工具 可以帮助他们快速的解决工作中的问题 方便 简单 快捷又明了的解决问题 小编整理了三款站长们都爱的 ftp 客户端软件 第一款 IIS7 服务器管理工具这款工具是真的好用 童叟无欺的那种好用 在我心里它是排在中文版 javaftp 工具类中的榜首的 它不仅拥有每个 javaftp 工具类都具备的批量管理功能 还具备很多你意想不到的地方 比如定时同步 上传和下载 多任务同时进行 定时备

    2026年3月26日
    2
  • SIGPIPE[通俗易懂]

    SIGPIPE[通俗易懂]当服务器close一个连接时,若client端接着发数据。根据TCP协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。我写了一个服务器程序,在Linux下测试,然后用C++写了客户端用千万级别数量的短链接进行压力测试.  但是服务器总是莫名退出,没有core文件.最后问题确

    2022年5月7日
    46
  • python数组使用(超级全面)「建议收藏」

    python数组使用(超级全面)「建议收藏」1、Python的数组分三种类型:(1)list普通的链表,初始化后可以通过特定方法动态增加元素。定义方式:arr=[元素](2)Tuple固定的数组,一旦定义后,其元素个数是不能再改变的。定义方式:arr=(元素)(2)Dictionary词典类型,即是Hash数组。定义方式:arr={元素k:v}2、下面具体说明这些数组的使用方法和技巧:(1)lis…

    2022年8月13日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号