我在互联网上找到了一个应用程序,当你单击一个链接时,它将重定向到一个页面而不刷新整个地方并更改url地址栏,我知道它可能因为JQuery可以访问客户端sode浏览器
请帮助我。
答案 0 :(得分:8)
使用历史api你可以做这样的事情
if (history && history.pushState){
history.pushState(null, null, '/new/url');
}
现在使用chrome js console
在浏览器中尝试这就是所需要的(可能多一点,但这就是它的基础
中阅读更多内容答案 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#符号后执行此操作