我在互联网上找到了一个应用程序,当您单击 A 链接时,它将重定向到 A 页面而不刷新整个位置并更改 url 地址栏,我知道它可能是因为 JQuery 可以访问客户端浏览器。
请帮我解决这个问题。
使用历史 API 你可以做这样的事情
if (history && history.pushState){
history.pushState(null, null, '/new/url');
}
现在使用 chrome js 控制台在浏览器中尝试
这就是它所需要的(也许更多,但这就是它的基础
您可以使用 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
这通常通过使用最新的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 的旧方法。IE8
History
如果您只需要打印一些信息,在 de dash # 符号之后执行将不会重新加载文档
最简单的解决方案是使用框架或 iframe 并将 的target
属性设置a
为框架(或者只需单击框架内的链接)。这将在框架内显示新页面,并在地址栏中显示框架集 html 的地址。