前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >location.hash详解[通俗易懂]

location.hash详解[通俗易懂]

作者头像
全栈程序员站长
发布2022-09-14 11:21:24
4270
发布2022-09-14 11:21:24
举报
文章被收录于专栏:全栈程序员必看

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

了解vue-router原理中更新URL但不重载页面

原理之一location.hash

1.存在形式及意义

一般情况下为URL后 “#” 及其后面一部分组成,如http://www.test.com/#/something,

其中http://www.test.com为真实的路径,而#/something则为网页中的位置,称之为锚点

在访问锚点时会自动跳刀锚点所在的网页位置,通常有两种方式作为锚点

<a name=”something”></a>

<element id=”something”></element>

以上两种均可通过http://www.test.com/#/something使页面滚动到该元素的位置

2.hash的读写

location.hash可读可写的

代码语言:javascript
复制
//当前URL为http://www.test.com/#/something
location.hash;		        //输出 #/something

location.hash = '#/test1';	//http://www.test.com/#/test1,并且会新增一条历史记录

在对hash写时有个需要注意的地方,如下所示

代码语言:javascript
复制
//当前URL为http://www.test.com/
location.hash = "#/test"	//http://www.test.com/#/test
locationl.hash = "/#/test"	//http://www.test.com/#/#/test

当写入第一个字符不为为 “#” 时会自动生成一个 “#” 在字符串之前,再把字符串追加到生成的#后面

这样会造成有两个#,此时location.hash输出 “#/#/test”

3.onhashchange事件

在hash值发生变化时会触发该事件

代码语言:javascript
复制
window.onhashchange = function(e){
	console.log(e);
}

总结:

location.hash与HTML5 history类似,都能够在改变页面的URL而不会引起浏览器的重载

但是location.hash支持比较早的浏览器,而history是在HTML5的新API,可能某些较早的浏览器不支持

因此在vue-router中对此做了两种模式,即history模式与hash模式可以适应不同的浏览器

具体解释之后更新vue-router的原理分析

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

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

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

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

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

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