Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Возможен ли Запуск ява-скрипт при откате Истории в браузере назад ? (https://javascript.ru/forum/misc/28575-vozmozhen-li-zapusk-yava-skript-pri-otkate-istorii-v-brauzere-nazad.html)

Deff 25.05.2012 01:49

Возможен ли Запуск ява-скрипт при откате Истории в браузере назад ?
 
Возможен ли Запуск ява-скрипт при откате Истории в браузере назад ?:help:

Kolyaj 25.05.2012 08:39

Ну то есть вы думаете, что те, кто не в контексте вашей задачи, поняли, что вам надо?

devote 25.05.2012 08:49

речь наверно о History API ну или можно отловить нажатие кнопки back через событие popstate

Deff 25.05.2012 11:08

devote, Ну собственно наверно так

Не посоветуете, где прочитать про событие popstate, и интересует кроссбраузерность,

Deff 25.05.2012 11:44

Собственно задачи две:

1-я. На маййб(бесплатные форумы без доступа к движку) анализирую у новичков форму отправки сообщений на спам, при наличии спам ссылок, добавляю при субмите метку в тот же textarea, страница обновляется и выводится в этом же окне(это всё в компетенции движка) при возможном возврате пользователя на предыдущую страницу желательно метку удалить.
2-я задачка - несколько сложнее...

Deff 26.05.2012 04:49

Хотя бы пример с запуском алерт при переходе на страницу назад ???

devote 27.05.2012 00:02

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

Deff 27.05.2012 00:12

devote, Спасибо! (Плусы зажал сайт
Да мну вродь и я сельским методом чот реализовал (я смотрел Ваш бронепоезд на хабре, :lol: Ыы для моей задачи проще забыть про тот скрипт) - прост сам скрипт теста спама - десяток строк ...

Этот Конечно покороче хабра ( Потещу сейчас СПС...

devote 27.05.2012 00:19

Поправил немного код, скопируй заного

Deff 27.05.2012 00:23

Пасиб ... Ксать у мну тож часто (работаю в тех поддержке ... ну оторвут от кофе, как ток сядешь пить - то кавычку забыл, то лишний тег вставил


Часовой пояс GMT +3, время: 09:09.