2

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

帮我解决这个问题。

4

5 回答 5

8

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

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

现在使用 chrome js 控制台在浏览器中尝试

这就是它所需要的(也许更多,但这就是它的基础

在http://diveintohtml5.info/history.html阅读更多内容

于 2013-06-18T10:43:04.890 回答
3

您可以使用 HTML5 History API 更改 URL 而无需刷新页面,请查看 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

于 2013-06-18T10:31:32.007 回答
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 会做同样的事情。当您单击主页按钮或转到朋友的个人资料时,不会加载新页面。右侧的通知栏保持原样(而不是为新页面再次加载),如果您打开了任何聊天框,它会保持原样。这是因为页面不会重新加载到新页面(在这种情况下,所有小部件,包括聊天和ticker 也应该重新加载),只是动态更改 URL,并通过 Ajax 获取和显示新内容。

如果您在不支持API 的Facebook中查看,您会发现它仍然有效,但 URL 更改行为不同。这是因为他们依靠通过更改哈希来更改 URL 的旧方法。IE8History

于 2013-06-18T11:54:37.887 回答
0

如果您只需要打印一些信息,在 de dash # 符号之后执行将不会重新加载文档

于 2013-06-18T10:46:30.187 回答
0

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

于 2013-06-18T10:30:13.167 回答