на вот не мучайся, наколенный вариант, но должен работать:
(function( window ){
var
eventType = window.addEventListener ? [ "addEventListener", "" ] : [ "attachEvent", "on" ],
previousePage = "",
handler = [];
window[ eventType[ 0 ] ]( eventType[ 1 ] + "load", function(){
if ( window.name && window.name !== location.href ) {
previousePage = window.name;
for( var i = 0; i < handler.length; i++ ) {
handler[ i ]( previousePage );
}
}
window.name = location.href;
}, false );
document[ eventType[ 0 ] ]( eventType[ 1 ] + "click", function( e ) {
e = e || window.event;
// если был клик по ссылке,
if ( ( e.target || e.srcElement ).nodeName === "A" ) {
// то очистим window.name что бы не сработало событие при загрузке
window.name = "";
// обратно заполним window.name если ссылка не сделала переход в течении секунды.
setTimeout( function() {
window.name = location.href;
}, 1000 );
} else {
// навсякий случай заполним window.name при клики на других тегах
window.name = location.href;
}
}, false );
window.trackingHistory = function( listener ) {
if ( previousePage ) {
listener( previousePage );
} else {
handler.push( listener );
}
}
})( window );
trackingHistory(function( previousPage ) {
alert( "Сделали переход по истории, со страницы: " + previousPage );
});