2010-08-01 137 views
17

我想知道是否可以在不重新加载页面的情况下更改浏览器中URL的内容?在不重新加载页面的情况下更改URL

我使用jQuery和Ajax来加载我的页面的新部分。当我选择“产品一”时,直接链接将是mysite.com/product1,“产品二”将是mysite.com/product2,但我不想将网站重新加载到这些页面。

回答

-3

你不能。只有当你改变哈希,就像sAc告诉你的一样。

但是..请问为什么?

+2

我不是OP,但我觉得它有用,当你通过AJAX改变你的内容,然后你的访问者希望存储他正在寻找的页面在书签/通过电子邮件发送/等.. – nothrow 2010-08-01 08:43:36

+0

像Yossarian说,这是我的原因之一。另外,因为页面加载的负载较少使用ajax,并且加载比较好看。 – 2010-08-01 19:43:38

+0

@Yossarian:我问他为什么要使用site.com/product,就像最初的Q(不是哈希)。 @Paul:如果你改变了超过4-50%的页面内容,你可能想重新考虑你的策略,因为你将通过页面传输获得的速度将被DOM操作时间取消:) – 2010-08-02 06:18:06

1

CAN这样做。尽管您可能需要一个现代浏览器。看看这个页面:http://www.20thingsilearned.com/由Google Chrome团队创建(我使用Chrome 9来阅读它)。更改页面不会重新加载整个网页,而是更改URL。

15

它现在可以通过HTML_5 ..

焯芬此链接...​​3210

也是Facebook和使用Hash(#)旁边这个TRIC谷歌属性

+0

太棒了!对于跨浏览器支持,您可以使用像history.js的图书馆https://github.com/balupton/history.js – Pepper 2011-07-08 19:09:10

+2

它看起来像链接被破坏... – 2016-11-07 16:10:18

7

这是可能的HTML5。查看演示here

您可以将URL更改为同一个域中的另一个URL,但出于安全原因无法更改域。

有关详细信息,请参阅HTML5 specification中的history接口。

7

只用这一个

window.history.pushState("object or string", "Title", "/new-url"); 
+0

小心IE浏览器<10:http:// caniuse的.com /#搜索= pushState的。使用像history.js这样的polyfill。 – Johann 2015-02-24 22:31:38

相关问题