服务器无法获取hash值

发表于 JS 分类,标签:

原因很简单,因为HTTP请求不包含#, #后面的内容不会发送到服务器端。

url地址:

http://localhost:1111/project/index.html?name=zhangsan#aaa 

image.png

发送到后端的地址:


image.png

在第一个#后面出现的任何字符,都会被浏览器解读为位置标识符。这意味着,这些字符都不会被发送到服务器端。

例子,url: http://localhost:1111/project/index.html#aaa?name=zhangsan 

 咱们只是将#aaa,移到的问号之前,然后你会发现 query 参数都没有了,所以证实了上面那句话。

在第一个#后面出现的任何字符,都会被浏览器解读为位置标识符。


image.png

image.png


对于客户端来说

改变url中的#内容,不触发网页重载, 最常用的就是锚点定位。
单单改变#后的内容,浏览器只会滚动到相应位置,不会重新加载网页。
浏览器不会重新向服务器请求页面。但是,每一次改变#后的部分,都会在浏览器的访问历史中增加一个记录,使用"后退"按钮,就可以回到上一个位置。

客户端的js可以获取#值,语法:window.location.hash

另外HTML 5新增的事件,当#值发生变化时,就会触发这个事件。IE8+、Firefox 3.6+、Chrome 5+、Safari 4.0+支持该事件。

它的使用方法有三种:
1.window.onhashchange = func;
2.<body onhashchange="func();">
3.window.addEventListener("hashchange", func, false);

0 篇评论

发表我的评论