url中含有#!,代表什么?
url:http://pubs.rsc.org/en/journals/journalissues/cc#!recentarticles&adv
一般情况下,#代表锚点,是提示给浏览器用的,服务器是不认的。
我的问题是:我在浏览器地址栏中输入http://pubs.rsc.org/en/journals/journalissues/cc
,浏览器会自动补全#!recentarticles&adv
既然服务器不认#后面的内容,那浏览器是如何自动补全#!recentarticles&adv
的?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
#!recentarticles&adv
可以通过JS脚本添加上去,用于控制当前页面内容的显示及请求数据内容,在单页面应用中会使用到~~~例如:
http://myApp.com/#!login -->显示登录画面
http://myApp.com/#!prefenece-->显示个人设置画面
http://myApp.com/#!product=1234-->显示某个产品的详细信息等
具体的语义自己通过JS来解析
路由。
典型的单页应用路由设置,#!后面的内容对应不同的路由,其js通过判断路由的变化作出不同的响应,实现功能的切换。
再者,#!是Google推出的可供其搜索引擎爬虫识别的信号。通过这个形式,Google的爬虫会把#!后面的路由地址识别成不同的地址,叫做hashbang,去请求不同的内容,有别于传统爬虫无法识别#后面的内容。
简单来说,就是Google的SEO。这句话不全对,但可以理解为这么个意思。
我在router技术中看到这种情况,好像是可以去掉的,开启本地缓存还要进行设置,这是开发方进行的程序
url中的#用法,是单页面的前端路由控制使用的,主要使用了H5中pushState方法,可以在页面不刷新的情况下,修改url地址并调用js函数,切换到不同的页面功能。
url中的#后面的内容,不是浏览器自动补全的,是页面的路由加载后,路由函数会显示默认页面的hashbang