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页面刷新。我们希望能帮助你。如果你有任何问题,请给我留言,萧边会及时给您回复。谢谢您支持网站。