使用hashchange事件我检测用户何时单击浏览器中的后退按钮并相应地更改URL。是否有更好的方法来进行分页?我正在用户点击我的分页控件之后更改URL,如下所示:
$(".pager").click(function(){
var start = null;
if ($.browser.msie) {
start = $(this).attr('href').slice($(this).attr('href').indexOf('#')+1);
}
else {
start = $(this).attr('href').substr(1);
}
$('#start').val(start);
$.post("visits_results.php", $("#profile_form_id").serialize(),
function(data) {
$('#search_results').html(data);
location.href = "#visits=" + start;
});
return false;
});
我检测后退按钮的javascript如下所示:
function myHashChangeCallback(hash) {
if (hash == "") {
$("#loadImage").show();
var no_cache = new Date().getTime();
$('#main').load("home.php?cache=" + no_cache, function () {
$("#loadImage").hide();
});
return false;
}
else {
// adding code to parse the hash URL and see what page I'm on...is there a better way?;
}
}
function hashCheck() {
var hash = window.location.hash;
if (hash != _hash) {
_hash = hash;
myHashChangeCallback(hash);
}
}
我目前计划检查每个#标签和值以查看我应该加载哪个页面,除非有更好的更有效的方法。
有任何想法或建议吗?
答案 0 :(得分:0)
jQuery Address插件做得非常好。设置完成后,它会提供一系列可以挂钩的逻辑导航事件。它还对history.pushState()
提供了非常好的支持,消除了在新浏览器中对主题标签的需求,并且对那些不支持pushState的浏览器也提供了同样好的后备支持。
一个简单的实现看起来像这样:
// Run some code on initial load
$.address.init(function(e) {
// Address and path details can be found in the event object
console.log(e);
});
// Handle hashtag/pushState change events
$.address.change(function(e) {
// Do more fancy stuff. Don't forget about the event object.
console.log(e);
});
// Setup jQuery address on some elements
$('a').address();
要启用pushState()支持,请将参数传递给脚本,如下所示:
<script type="text/javascript" src="jquery.address-1.3.min.js?state=/absolute/path/to/your/application"></script>