pushstate,replacestate,onpopstate实施前后及刷新的AJAX页面

使用Ajax可以异步获取数据并更有效地呈现页面。

但也存在一些问题:

当页面再次刷新时,页面将成为初始状态。

浏览器的后退功能无效。

对搜索引擎不友好的爬虫

1,

早些时候,浏览器的散列锚将被用来解决这个问题。

不同的散列标记页面的不同部分,可以纠正页面刷新数据错误的问题。

通过onhashchange事件监视器的哈希锚的变化,往前追溯操作进行手动的,和浏览器的支持支持。


2,

然后一名技术的出现,即URL标记后#! /建立解决上述问题

一个页面的一部分是通过路径的定义,这往往是在一个单页应用程序看到(已封装在角)。但似乎只有眉目传情真的支持爬行的路径。

三,

HTML5的新特性有助于通过两新历史方法如pushstate和replacestate解决这三个问题,并onpopstate窗口事件。

当然,因为它是一个HTML5的新特性,它不支持旧版本的浏览器,并认为它与名法兼容。

本文主要讨论了pushstate新事物

这篇课文太无聊了。首先,看图片,直接看。


它的目的是:初始值为0,可以通过异步请求递增或递增,可以向前或向后移动和刷新。打开一个新URL后,它也可以得到相应的数据。


history.pushstate(状态、标题、URL)
history.replacestate(状态、标题、URL)


状态是一个JSON对象,它可以以自己的方式存储一些数据。标题是URL对应的标签标题(但是浏览器似乎忽略了这个参数)。

URL是页面的标记URL。操作将更改地址栏的URL,它不会立即加载URL。只是它可以标记W = A,ajaxpage。HTML / W = A和W = A,它仅仅是一种标志,当该值作为对比。

replacestate和pushstate之间的区别是,前者是当前价值的直接替代,后者是按值入栈。

在window.onpopstate事件被触发时,第一个JSON对象,上述方法可以通过history.state

实现部分

HTML




价值:0



js


VaR值= $(美元的# Ajax测试val),
获取当前页/标记
M = window.location.search.match( / val =( D +)/);
通过在URL中标记初始化数据来输入页面
如果(m){
increaseval(M { 1 } - 1);
}
请求
功能increaseval(Val){
美元。后('ajax-test。php,{
瓦迩:瓦尔
},功能(newval){
val.text美元(newval);
与对象相关的存储相关值
var状态= {
瓦迩:newval,
标题:标题-+ newval,
网址:'val =+ newval
}
将关联值插入到历史堆栈中
window.history.pushstate window.history.pushstate(州、state.title,状态。URL);
});
}
$(# Ajax测试按钮)。Click(function(){)
increaseval(parseInt($ val.text()(10),10));
});
/ /浏览器的前进和后退,popstate事件触发
window.onpopstate =函数(){
无功状态= window.history.state;
console.log(状态)
值,或再次发送Ajax请求
val.text美元(状态。Val);
window.history.replacestate window.history.replacestate(州、state.title,状态。URL);
};


PHP


< PHP
_request美元美元值= 'val'} {;
$ 1;
>


在这里,不同的Ajax结果页面以标记的方式标记。

提示:

使用后pushstate,目前回到触发popstate事件获得相应的JSON对象

JSON对象的数据可以自定义。

您可以简单地为一个请求存储相关的标记,或者直接保存标记页的结果。

通过后台操作,更新了地址栏URL,更新了异步数据。

若要刷新页面或打开页面,请根据URL中的标记请求数据。

要记住的是,浏览器不会自动加载我们需要获取的相应异步内容页的URL部分。

以上是pushstate,replacestate和onpopstate萧边介绍的实现向前和向后的AJAX页面刷新。我们希望能帮助你。如果你有任何问题,请给我留言,萧边会及时给您回复。谢谢您支持网站。