html5 history.pushState+ajax 实现无刷新,浏览器地址栏title修改

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了html5 history.pushState+ajax 实现无刷新,浏览器地址栏title修改相关的知识,希望对你有一定的参考价值。

 1 <html>
 2 <body>
 3 <script>
 4 var total="";
 5 for (var i=0;i<1000000;i++)
 6 {
 7     total= total+i.toString ();
 8     history.pushState (0,0,total);
 9 }
10 </script>
11 </body>
12 </html>

 

 

最近几天一直在说那个把ipone搞关机的js代码,其中有一行就是history.pushState,我认为我out了,虽然说是写后端的,但这个API早就出来了,我一直没听过,真实惭愧啊,于是赶紧学习了一下。

以前的history 就知道history.back(),history.go(-1)这几个历史命令。当时还以为html5把这两个方法更新了。看了才发现,是一个新的功能:可以用js添加历史功能了。想着这个功能的各种使用场景,偶然在百度上看到这个能修改浏览器地址栏,不由得来了精神。期待好久了。于是赶紧尝试一下。代码如下,一个简单的本地测试。

 

 1 <!doctype>
 2 <html>
 3 <head>
 4 <title>凤凰网-娱乐</title>
 5 <script src="http://s0.ifengimg.com/static/js/jquery-1.7.2.min_c4de8813.js"></script>
 6 </head>
 7 <body>
 8 <button id="yule">娱乐</button>
 9 <button id="caijing">财经</button>
10 <button id="xinwen">新闻</button>
11 <button id="fangchan">房产</button>
12 </body>
13 </html>
14 <script>
15 $(‘button‘).click(function(event) {
16 /* Act on the event */
17 //var link = window.location.href.split(‘?‘);//获取当前页面的链接
18 
19 //console.log(link);
20 
21 var title = ‘凤凰网-‘+$(this).text();
22 var newlink = ‘http://localhost/‘+$(this).attr(‘id‘)+‘.html‘;
23 console.log(newlink);
24 console.log(title);
25 
26 //ajax业务处理 将页面内容替换
27 
28 #some code...
29 history.pushState({‘title‘:title},title,newlink);//修改地址
30 document.title = title;//修改地址
31 });

 

以上是关于html5 history.pushState+ajax 实现无刷新,浏览器地址栏title修改的主要内容,如果未能解决你的问题,请参考以下文章

ajax与HTML5 history pushState/replaceState实例

使用ajax和history.pushState无刷新改变页面URL

ajax与HTML5 history pushState/replaceState实例

HTML5历史状态管理history API-pushState/replaceState与popstate事件

HTML5历史状态管理history API-pushState/replaceState与popstate事件

为 Angular 2 配置 history.pushState