Показать сообщение отдельно
  #7 (permalink)  
Старый 27.05.2012, 00:02
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

на вот не мучайся, наколенный вариант, но должен работать:
(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 );
});
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine

Последний раз редактировалось devote, 27.05.2012 в 00:20. Причина: Подправил немного код
Ответить с цитированием