我正在构建一个Web应用程序,并希望遵循Web行业的最佳实践。
我意识到很多网络应用程序都在他们的网址中使用#。
例如,看看谷歌分析。
https://www.google.com/analytics/web/?hl=en#report/visitors-language/a33185827w60383872p61754588/
当我查看访客语言页面时,此地址位于地址栏中。
https://www.google.com/analytics/web/?hl=en#report/visitors-geo/a33185827w60383872p61754588/
当我查看访客地理位置页面时,此地址位于地址栏中。
我从中理解的是#report / visitor-language和#report / vistiors-geo
的传递另外我了解谷歌分析正在使用iframe。似乎只有主要内容框正在改变和显示内容。
#用于实现iframe功能吗?如果有人能指导我(初学者程序员试图学习更多东西)朝着正确的方向发展,我将不胜感激。
答案 0 :(得分:3)
这是网址中的“哈希”。
许多浏览器都支持javascript中的哈希更改事件。
据我所知,哈希变化是ajax回调的革命。
因此当用户使用散列与任何链接进行交互时,然后在散列更改时触发事件,并且您可以使用javascript应用任何内容。
另一件事是浏览器历史记录支持散列更改。
答案 1 :(得分:3)
有几个答案,但似乎都没有覆盖后端部分。
普通网址,您自己的示例: https://www.google.com/analytics/web/?hl=en#report/visitors-language/a33185827w60383872p61754588/
您可以将后哈希(包括哈希)部分(也称为片段)视为客户端请求。
Web服务器永远不会知道哈希符号后输入的内容。它是指向页面特定ID的浏览器。
对于基本网页,如果您输入
< a name="main">welcome< /a>
如果您的网站位于http://example.com/welcome,则打开http://example.com/welcome#main会将您的浏览器“关注”到标记中的“欢迎”文字。
Web服务器不知道#main是否在URL中。
将问号作为URL参数调用后,在URL中填充。 Web服务器可以在这些值上提供不同的内容。
然后,有一种名为“Ajax”的技术利用URL中的这些#部分来提供不同页面加载的不同内容。这不是iframe。 使用JavaScript,您可以触发url后哈希部分的更改,并向服务器发出请求以获取页面的特定部分。 http://example.com/welcome#main2 即使名为“main2”的部件不存在,也可以使用JavaScript显示。
hashbang是“#!”。通过指示此部分是动态网页,使搜索引擎的生活更轻松。
PS:刚刚注意到这是我在SO中的第100个答案!答案 2 :(得分:1)
请参阅以下网址
SEO and the use of !# in a url
或阅读
“#!被称为“hashbang”,它们是Web开发中所有邪恶的根源。'
基本上,弱网络开发人员决定使用#anchor名称作为kludgy hack来让“web 2.0”的东西在他们的页面上运行,然后抱怨谷歌他们的页面排名遭受了损失。谷歌通过启用hashbang来解决他们的问题。
弱的网络开发人员把这项工作作为福音。不要使用它。这是一个拐杖。
依赖于hashbangs的Web开发是错误的Web开发。
这篇文章的措辞远远超出我的预期,并且处理Gawker媒体惨败从他们迁移到(失败的)hashbang中心网站。它告诉你发生了什么以及为什么它不好。
http://isolani.co.uk/blog/javascript/BreakingTheWebWithHashBangs
答案 3 :(得分:0)
如果我错了,请纠正我,该URL中的#标签将用作将页面滚动到具有id的元素的锚点。例如,我将您发送到网址http://example.com/sample#example,页面将在元素处滚动(仅显示)(我使用div作为任意示例,它可以是任何内容)。
答案 4 :(得分:0)
网址中的Ajax和哈希标记主要用于快速操作。 如果您的网站中有一部分只能通过火灾事件(主要是点击)看到 - 那么就很难分享它。使用网址中的哈希标记,您可以(通过javascript)让浏览器认为您执行了必要的操作,并显示相关部分。
答案 5 :(得分:0)
通常,在网址中使用'#'会在该特定网页中找到“#”旁边的特定ID。通过使用它,我们也可以查看页面中间的特定内容。