Я работаю с сайтом, где все содержимое передается с помощью ajax postbacks с помощью jquery. Я использую Ben Alman hashchange (http://benalman.com/projects/jquery-hashchange-plugin/), чтобы управлять историей хэша, которая позволяет мне закладок страниц, использовать кнопку "Назад" и т.д.... Все работает отлично на всем но IE 9, конечно. В IE есть небольшая проблема с "посещенными" ссылками, которые не помечены как посещенные. Вы можете видеть, что ссылка становится фиолетовой (посещенной) в течение секунды секунды после нажатия на нее до загрузки нового содержимого. Но как только вы нажмете кнопку "Назад", ссылка появится так, как будто ее никогда не посещали. Вот пример того, о чем я говорю: http://jsfiddle.net/7nj3x/3/
Вот код jsfiddle, предполагающий, что у вас есть jquery и плагин hashchange, упомянутый в голове:
$(function(){
// Bind an event to window.onhashchange that, when the hash changes, gets the
// hash and adds the class "selected" to any matching nav link.
$(window).hashchange( function(){
alert("Hash changed to:"+location.hash);
var hash = location.hash;
// Set the page title based on the hash.
document.title = 'The hash is ' + ( hash.replace( /^#/, '' ) || 'blank' ) + '.';
//simulate body being rendered by ajax callback
if(hash == ""){
$("body").html("<p id='nav'><a href='#test1'>test 1</a> <a href='#test2'>test 2</a> <a href='#test3'>test 3</a></p>");
}
else{
$("body").html("Right click within this pane and select \"Back\".");
}
})
// Since the event is only triggered when the hash changes, we need to trigger
// the event now, to handle the hash the page may have loaded with.
$(window).hashchange();
});