前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >学习分享——location.hash的用法「建议收藏」

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

作者头像
全栈程序员站长
发布2022-09-07 16:19:01
7850
发布2022-09-07 16:19:01
举报
文章被收录于专栏:全栈程序员必看

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

学习分享】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.cn/154364.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档