на вот не мучайся, наколенный вариант, но должен работать:
(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 );
});