Я не хочу с Вами спорить, НО!!!
if (window.addEventListener)
window.addEventListener('popstate', popstate, false);
else
window.onpopstate = document.onpopstate = popstate;
Правильнее чем ваш вариант, потому что в старых версиях IE события делигируются почти как в нормальных браузерах, только событие делигируется не window.addEventListener(NAME), а window.onNAME = ""
Если не внрите проверте в 8 осле вот этот НЕКРАСИВЫЙ код (НЕКРАСИВЫЙ потому что я его набросал по быстрому с разных файлов)))
[ <a class='ajax' href='index.php'>index</a> |
<a class='ajax' href='contacts.php'>contacts</a> |
<a class='ajax' href='about.php'>about</a> ]
<script src="history.ielte7.js"></script>
<script src="jquery-1.11.3.min.js"></script>
<script>
// history.ielte7.js - это полифил от Devote - [url]https://github.com/devote/HTML5-History-API[/url]
$(function() {
var location = window.history.location || window.location;
$(document).on('click', 'a.ajax', function() {
history.pushState(null, null, this.href);
return false;
});
if (window.addEventListener)
window.addEventListener('popstate', popstate, false);
else
window.onpopstate = document.onpopstate = popstate;
function popstate(){
alert("Мы вернулись на страницу со ссылкой: " + location.href);
}
});
</script>
<div id="content" class="content"><?php echo $content; ?></div>