在过去的几年里,我已经做了很多阅读,试图熟练掌握JavaScript及其框架。似乎大多数文本要么教授ajax的基本知识,将某些东西加载到空元素中,要么他们假设你知道你在做什么并浏览数据处理部分。我随着时间的推移开发了自己的方法,但没有比较它们。我不知道他们有多高效。在构建基于ajax的站点时,我通常使用jquery和history.js,我的代码如下。
function updateContent(state){
var theUrl = state.data.urlPath; //the url of what needs ajaed in
$('#container #content').fadeOut(500, function(){ //fade out old content
var newContent = {};
newContent.load(theUrl + ' #content', function(){ //load new content into object
newContent.hide(); //hide it so it can be faded in
$('#container').html(newContent); //replace content in container
newContent.fadeIn(500); //fadein content
});
});
}
var History = window.History;
if (History.enabled) {
var State = History.getState();
History.pushState({urlPath: window.location.href}, $("title").text(), State.urlPath);
} else {
return false;
}
History.Adapter.bind(window, 'statechange', function() {
updateContent(History.getState());
});
$(document).on('click', 'a', function(evt){
var testSite = /http:\/\/www.example.com(\/)?/ //regex to test if is local link
var theUrl = $(this).attr('href'); //the url of the clicked link
if(testSite.test(theUrl)){
evt.preventDefault();
History.pushState({urlPath: theUrl}, title, theUrl);
}
});
这是我的代码的基础知识。我觉得使用后退按钮效率很低。返回时,必须重新加载内容。有没有更有效的方法来做到这一点?