【问题标题】:Ajax page navigation '#' symbolAjax 页面导航 '#' 符号
【发布时间】:2012-05-03 21:55:35
【问题描述】:
我关注了google的
https://mail.google.com/mail/?shva=1#inbox
尤其是#inbox
这个网址可以加书签,怎么实现的?
【问题讨论】:
-
-
mail.google.com/mail 的页面在加载后只需使用 JavaScript 检查哈希标记,然后异步修改页面以显示“收件箱”内容。这并不是完全那么简单,因为他们采用了其他机制来不破坏后退按钮并保留历史记录。
标签:
javascript
ajax
navigation
【解决方案1】:
因为它是由 Javascript 通过 Ajax 调用处理的,所以会考虑查询字符串中的内容。
在Javascript中定位所有#标签的一个例子是:
urlquery=location.href.split("#");
因此,当第一次加载包含此类链接的页面时,页面上的链接会生成包含 # 个锚点,单击这些锚点会更改位置地址,但不会导致页面重新加载,因为它是锚点到当前页面。然后 javascript 挂钩到 click 事件完成通过 Ajax 加载真实内容的真正工作。
但是,由于地址栏上的地址已更改,您可以将其存储在书签中。加载该书签时,它会使用 javascript 加载准系统 Web,以再次检测带有 # 的地址上的哪些标签,然后通过 Ajax 加载真实内容。
这就是为什么,例如,谷歌浏览器上 Twitter 页面的缩略图总是显示一个没有消息的界面,因为当那个缩略图生成时,Ajax 仍然没有加载内容。