【发布时间】:2012-02-23 18:28:14
【问题描述】:
我知道这个主题有点奇怪。
当我转到http://www.heroku.com/how/relax 并单击其他菜单(部署、连接等)时,我看到浏览器更改了它的 url,但感觉就像 Ajax。
这种技术叫什么?
【问题讨论】:
-
@x3ro // 这正是我想要的。谢谢!
标签: javascript ajax hash
我知道这个主题有点奇怪。
当我转到http://www.heroku.com/how/relax 并单击其他菜单(部署、连接等)时,我看到浏览器更改了它的 url,但感觉就像 Ajax。
这种技术叫什么?
【问题讨论】:
标签: javascript ajax hash
使用 javascript 和 DOM 调用此技术,以使用 fadeIn() 和 [fadeOut()][2] 动画(用于 jQuery)更改页面内容。
页面位置变化:
您必须使用HTML5's pushState() method 来更改浏览器历史记录。
window.history.pushState(data, "Title", "/new-url");
文档说:
pushState() 接受三个参数:一个状态对象,一个标题(即 当前被忽略)和(可选)一个 URL。
最后一个参数是新的 URL。出于安全原因,您只能更改 URL 的路径,而不能更改域本身。第二个参数是对新状态的描述。第一个参数是您可能希望与状态一起存储的一些数据。
【讨论】:
违规代码:
historyAPISupported : function(){
return (typeof window.history.pushState !== 'undefined')
},
clickTab : function(tab){
var humanTab = tab.replace('js-', '')
var newUrl = document.location.pathname.replace(/\/(how.*)/, '/how/' + humanTab)
this.activateTab(tab)
if (this.historyAPISupported()){
window.history.pushState({ path: newUrl }, null, newUrl)
}else{
if (document.location.pathname != newUrl){
document.location.href = document.location.href.replace(/\/(how.*)/, '/how/' + humanTab)
}
}
},
我可以说它仍然使用锚点,但利用浏览器历史记录进行更改(您可以快速看到您的“进度”栏显示位置的哈希值,但浏览器 url 更改)。
除此之外,内容从一开始就加载,内容只是淡入淡出。
关于实际问题,我认为没有具体的名称。 AJAX 是在幕后加载内容,transitions 使视觉效果,一些狡猾的 JS 使链接看起来发生了变化。
【讨论】:
/html/body/section/div/article/aside 元素下,这些元素与标签相关,然后设置样式/动画以显示/隐藏。
很可能使用pushState() API 来处理浏览器 URL 更改为“假”导航。可以通过 AJAX 预加载或获取新内容。
【讨论】: