Javascript 更新浏览器地址栏而不重新加载
我喜欢facebook在图片之间滚动时更改浏览器地址栏URL的方式,以及它在IE7上的工作方式。然而,我只找到了关于如何在HTML5浏览器上实现这一点的信息,我想支持IE7 由于这是一个HTML5解决方案,因此:Javascript 更新浏览器地址栏而不重新加载,javascript,internet-explorer,url,Javascript,Internet Explorer,Url,我喜欢facebook在图片之间滚动时更改浏览器地址栏URL的方式,以及它在IE7上的工作方式。然而,我只找到了关于如何在HTML5浏览器上实现这一点的信息,我想支持IE7 由于这是一个HTML5解决方案,因此: window.history.pushState("object or string", "Title", "/new-url"); 如果有其他解决方案可用,则不可选择 编辑 在任何散列之前 但是有吗?我所知道的唯一其他选项涉及使用#hash片段,使用hashchange事件确定页面
window.history.pushState("object or string", "Title", "/new-url");
如果有其他解决方案可用,则不可选择
编辑
在任何散列之前
但是有吗?我所知道的唯一其他选项涉及使用
#hash
片段,使用hashchange
事件确定页面的“url”或“状态”,这在IE7中不受支持:
但是,存在多填充:
这是一种相当粗糙的方法,它破坏了HTTP协议,因为它依赖javascript来输出正确的内容,但您可能不关心这一点:
History.js
声称支持跨浏览器,尽管我没有使用过它(HTML5浏览器使用历史记录,旧浏览器使用hashchange):
有些关联:我知道的唯一一个没有html5的解决方案是,但不幸的是,它只支持IE8+。我忘了在问题中提到,但我需要在散列之前更改url。这能做到吗?@Christian:如果不支持历史API,这是不可能的。这是使用“hashbang”技术的问题之一,您的URL可能会像
example.com/posts/post1一样结束!posts/post2
。。。它确实有很多问题。基本上,“实际url”通常是整个散列片段。基本上,当用户单击某个链接时,我将使用它,新内容加载到iframe中,因此url不会更改,并且不可能链接到某个页面。至少您的后退和前进按钮可以使用iframe。您可以始终使用具有正确URL的“共享”链接。人们通常会使用这些,而不是复制/粘贴地址栏。如果不清楚的话,我只想说,我不推荐任何涉及读取散列片段的解决方案。尽可能使用历史记录,并告诉IE滚蛋。