更改URL而不刷新?

时间:2013-06-18 10:25:28

标签: html frameset

我在互联网上找到了一个应用程序,当你单击一个链接时,它将重定向到一个页面而不刷新整个地方并更改url地址栏,我知道它可能因为JQuery可以访问客户端sode浏览器

帮助我。

5 个答案:

答案 0 :(得分:8)

使用历史api你可以做这样的事情

  if (history && history.pushState){
     history.pushState(null, null, '/new/url');
  }

现在使用chrome js console

在浏览器中尝试

这就是所需要的(可能多一点,但这就是它的基础

http://diveintohtml5.info/history.html

中阅读更多内容

答案 1 :(得分:3)

您可以使用HTML5历史记录API更改网址而不刷新页面,请查看Mozilla https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history的本教程。 另请查看https://github.com/browserstate/History.js以获取跨浏览器解决方案

jQuery PJAX插件https://github.com/defunkt/jquery-pjax将帮助您完成上述内容,它将有助于更新内容并更改URL而无需刷新。

以下是一个示例:http://pjax.heroku.com/
此示例的源代码可在此处获取:https://github.com/defunkt/jquery-pjax/tree/heroku

答案 2 :(得分:2)

这通常通过使用最新的HTML5历史记录API来完成,或者对于旧版浏览器,更改URL中的哈希值。看看这篇文章:http://dev.opera.com/articles/view/introducing-the-html5-history-api/

每当某个用户操作提示新页面,而不是加载新页面(使用新的URL)时,该页面将保留公共属性(例如,标题,页脚,或者说,在电子商务网站中,购物)购物车小部件),其余内容通过Ajax异步提取。获取新内容后,相应地更改UI,并将新state推入历史堆栈,并相应地更改URL。通过此处使用的data属性作为字典,您可以存储有关用户向前/向后导航并再次到达该页面时要显示的内容的信息。像这样:

history.pushState({mydata1: data, mydata2: anotherData},"newTitle",newURL);

因此,当用户按下浏览器的“后退”按钮时,该条目只会从历史堆栈中弹出,并且从堆栈顶部的新条目的数据属性中,将显示新页面。当前页面也可以更新:

history.replaceState({mydata1: data, mydata2: anotherData}, "anotherTitle",newURL);

有关当前页面的所有信息均可从state

获取
myState = history.state;

如果你观察到,Facebook会做同样的事情。单击主页按钮或转到朋友的个人资料时,不会加载新页面。右侧的通知自动收报机保持原样(而不是再次为新页面加载),如果您打开任何聊天框,它将保持原样。这是因为页面没有重新加载到新页面(在这种情况下,所有小部件,包括聊天和自动收录器也应该重新加载),只有URL被动态更改,新内容通过Ajax获取和显示。 / p>

如果您在IE8中查看不支持History API的 Facebook ,您会发现它仍然有效,但网址更改行为有所不同。这是因为他们通过改变哈希来改变改变URL的好方法。

答案 3 :(得分:0)

最简单的解决方案是使用框架或iframe,并将target的{​​{1}}属性设置为框架(或者只需单击框架内的链接)。这将在框架中显示新页面,并在位置栏中显示frameset-html的地址。

答案 4 :(得分:0)

如果您只需要打印一些信息,请在de dash#符号后执行此操作