Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Web > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 17.12.2014, 14:09   #1
dem66
Форумчанин
 
Регистрация: 31.05.2011
Сообщений: 316
Восклицание перехватить редирект в iframe

Здравствуйте.
Возможно как то перехватить редирект в фрейме?

Написал функцию которая создает фрейм, вешает на него калбеки и отправляет запрос.
В ответ сервер может перенаправить на другую страницу, и из этого вытекает вопрос - а можно ли отловить этот редирет? Нужно достать адрес на который оно перенаправляет.

Код:
<script>
	var CallbackRegistry = {}; // реестр
	
	var href = 'http://...';
	
	iframeGet(href, function(data){
		console.log('load');
		console.log(data);
	}, function(){
		console.log('error');
	});
	
	function createIframe(name, src, debug) {
		src = src || 'javascript:false'; // пустой src
		
		var tmpElem = document.createElement('div');
		
		// в старых IE нельзя присвоить name после создания iframe
		// поэтому создаём через innerHTML
		tmpElem.innerHTML = '<iframe name="'+name+'" id="'+name+'" src="'+src+'" style="width:700px;height:600px;border:1px red solid;" />';
		
		var iframe = tmpElem.firstChild;
		
		//if (!debug){
		//	iframe.style.display = 'none';
		//}
		
		document.body.appendChild(iframe);

		return iframe;
	}
	
	function iframeGet(url, onSuccess, onError){
		var iframeOk = false; // флаг успешного ответа сервера
		
		var iframeName = Math.random(); // случайное имя для ифрейма
		var iframe = createIframe(iframeName, url); 
		
		console.log(iframe);
		
		CallbackRegistry[iframeName] = function(data) {
			iframeOk = true;  // сервер ответил успешно
			onSuccess(data);
		}
		
		iframe.onload = function() { 
			//iframe.parentNode.removeChild(iframe); // очистка
			
			delete CallbackRegistry[iframeName];   
			
			if (!iframeOk) onError(); // если сервер не ответил как надо - что-то не так
		}
	}
</script>
dem66 вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно создать редирект сайта случайным образом, Случайный редирект на 1 из 3 сайтов Sanchez007 JavaScript, Ajax 1 24.11.2014 08:26
перехватить событие Windows 7 HotGod Общие вопросы Delphi 1 10.06.2010 14:33
должен подгрузиться скрипт который бы создал и вставил в этот див <iframe></iframe> Beni JavaScript, Ajax 1 05.08.2009 13:30
как перехватить открытие чужого приложенияпытаюсь перехватить открытие любого приложе rpy3uH Win Api 2 02.12.2006 12:12


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS