【发布时间】:2014-03-16 19:38:39
【问题描述】:
当从这个链接点击返回时,我找到了恢复上一页的方法。 JQuery & history.js back button not working
但是当我在 ajax 目标页面上重新加载时,初始状态再次设置初始状态,我无法单击返回按钮一次返回。
分步测试:
- 在主页上
- 单击第 1 页以使用 ajax 页面。
- 点击 ajax 链接(第 2 - 4 页)
- javascript ajax 请求目标页面并正确显示。
- 点击重新加载/刷新按钮
- 点击返回........没有任何反应。你们在同一页上。
- 再次单击返回。现在您在正确的第 1 页上,但必须单击两次。
如何防止history.js双击返回返回? (它应该点击一次。)
如果您不了解它的工作原理或想查看代码,请下载我的页面和代码。
http://www.megafileupload.com/en/file/513749/ajax-history-js-zip.html
要查看页面和代码的某些部分:查看此JSFiddle。
function ajaxPushUrl(thisobj) {
if ($('body').find('.ajax-content-column').length != 0) {
// current page has certain class.
var thisurl = thisobj.attr('href');
History.pushState({ajaxContentColumn:$('.ajax-content-column').html()}, thisobj.text(), thisurl);
return false;
}
}
function updatePage(data, url) {
if ($('body').find('.ajax-content-column').length == 0) {
// has NO certain class, use normal page request.
window.location.href=url;
return true;
}
if (url.toLowerCase().indexOf('page') >= 0) {
$.ajax({
url: url,
type: 'GET',
dataType: 'html',
success: function(data) {
$('.ajax-content-column').html(data);
return false;
}
});
} else {
$('.ajax-content-column').html(data.ajaxContentColumn);
}
}
$(function() {
if ($('body').find('.ajax-content-column').length != 0) {
// current page has certain class.
if (History.enabled) {
State = History.getState();
// from pushState below, when you are on ajax requested page and reload page, it must double back click to go back.
History.pushState({ajaxContentColumn:$('.ajax-content-column').html()}, $('title').text(), State.url);
}
// on state change, call update page js function.
History.Adapter.bind(window,'statechange',function(){
var State = History.getState();
updatePage(State.data, State.url);
});
}
});
【问题讨论】:
标签: javascript jquery ajax history.js