Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更新浏览器地址栏而不重新加载_Javascript_Internet Explorer_Url - Fatal编程技术网

Javascript 更新浏览器地址栏而不重新加载

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事件确定页面

我喜欢facebook在图片之间滚动时更改浏览器地址栏URL的方式,以及它在IE7上的工作方式。然而,我只找到了关于如何在HTML5浏览器上实现这一点的信息,我想支持IE7

由于这是一个HTML5解决方案,因此:

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滚蛋。