Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.10.2013, 18:32
Аспирант
Отправить личное сообщение для amigo* Посмотреть профиль Найти все сообщения от amigo*
 
Регистрация: 25.05.2010
Сообщений: 39

Redirect after iframe reload
Здравствуйте. Есть страничка, внутри которой находится iframe. В этом айфрейме есть кнопка. При нажатии кнопки на серверной стороне меняется контент айфреймовского сорса. Т.е. линк в iframe src остаётся тем же, что и был, но теперь по линку в src совершенно другой контент. Далее происходит reload айфрейма и контент меняется на новый.

У меня есть возможность вставлять js код в страничку, которая указана в iframe src (до reload).
Есть ли возможность сделать redirect _после_ reload? Не суть redirect, можно ли выполнить любой другой код автоматически после redirect? Пускай через setInterval и проверять изменился контент или нет.

Пробовал зацепиться так :
1)
Код:
    $("#" + iframeId).load(function () {
	alert(1)
    })
2)
Код:
var c = window.top.document.getElementById(iframeId);

c.__appendChild = c.appendChild;
c.appendChild = function(){
     alert('new item added');
     c.__appendChild.apply(c, arguments); 
}
3)
Код:
window.top.document.getElementById(iframeId).contentWindow.setTimeout(function () {alert(555)}, 1500)
4)
Код:
window.top.setTimeout(function () {alert(555)}, 1500)
Все вышеуказанные попытки провалились. Как только произошёл reload все скрипты от предыдущей страницы теперь не работают.

=========
Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 21.10.2013, 20:02
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,220

Сообщение от amigo*
Все вышеуказанные попытки провалились. Как только произошёл reload все скрипты от предыдущей страницы теперь не работают.
Если фрейм на том же домене, то можно так затестить URL фрейма
<iframe src="http://javascript.ru/forum/" name="myframe" height=500 width=100% onload="alert(myframe.window.document.URL)">
Ответить с цитированием
  #3 (permalink)  
Старый 22.10.2013, 13:24
Аспирант
Отправить личное сообщение для amigo* Посмотреть профиль Найти все сообщения от amigo*
 
Регистрация: 25.05.2010
Сообщений: 39

Сообщение от Deff Посмотреть сообщение
Если фрейм на том же домене, то можно так затестить URL фрейма
<iframe src="http://javascript.ru/forum/" name="myframe" height=500 width=100% onload="alert(myframe.window.document.URL)">
Видимо я недоступно объяснил суть вопроса . Потому, что, к сожалению, не могу понять зачем мне тестить URL.
Ещё раз.
* Есть html страничка (main.html):
<html>
	<head>
	</head>
	<body>
		<iframe id = "idIframe" src="iframehtml.html">			
		</iframe>		
	</body>
</html>

* Рядом в той же папке на сервере лежит iframehtml.html (страница, на которую ссылается iframe выше):
<html>
	<head>	
		<script type=text/javascript src=jquery-1.5.min.js></script>
	</head>
		<body>
			<div>
				Iframe html body
			</div>
			<input type=button id=goBtn value=go onclick="process()" />
			<script type=text/javascript> 
				function process() {
					beforeAction();
					//После перехода на process.html полностью изменится контент файла iframehtml.html
					$.get("/testiframe/process.html");
					setTimeout(function () {						
						window.top.document.getElementById("idIframe").contentDocument.location.reload(true);						
					}, 5000)					
				}

				function beforeAction() {
					window.top.setInterval(function () {console.log(new Date())}, 1000);

					var c = window.top.document.getElementById("idIframe");					

					c.__appendChild = c.appendChild;
					c.appendChild = function(){
						 alert('new item added');
						 c.__appendChild.apply(c, arguments); 
					}

					$("#idIframe").load(function () {
						alert(1)
					})

				}
			</script>
		</body>
</html>

* В iframehtml.html есть кнопка, по нажатию на которую, сабмитятся поля в айфрейме и контент файла iframehtml.html полностью изменяется со стороны сервера. Со стороны же клиента происходит reload и контент обновляется (Предположительно через window.top.document.getElementById("idIframe").con tentDocument.location.reload(true))
* У меня нет доступа к main.html и iframehtml.html. Но со стороны сервера я могу писать код, который при загрузке страниц попадёт в функцию beforeAction().
* Вопрос. Могу ли я написать такой код (какой?) в функции beforeAction, чтобы при reload айфрейма я всё ещё имел контроль над выполнением кода. Т.е., например, в идеале хотелось бы добавить setInterval для main.html, который бы каждые 500 мс проверял бы содержимое айфрейма, и как только он перезагрузится полностью, то я мог бы сделать redirect или выполнить ещё какой-то код.
Ответить с цитированием
  #4 (permalink)  
Старый 22.10.2013, 17:11
Аспирант
Отправить личное сообщение для amigo* Посмотреть профиль Найти все сообщения от amigo*
 
Регистрация: 25.05.2010
Сообщений: 39

Разобрался. Нужно создать свою html страницу, открывать её в beforeAction() через window.open(). А уже из открывшегося окна можно установить setInterval и отслеживать контент в айфрейме родительского окна. Таким образом скрипт запущенный из айфрейма будет работать и после его перезагрузки.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вставка контента на страницу: div vs iframe hrundel Общие вопросы Javascript 8 23.08.2016 08:48
получение ссылки на iframe из содержимого в этом iframe mister_maxim Events/DOM/Window 5 15.02.2013 21:48
Изменить параметр тега iframe AlexM jQuery 2 26.01.2012 11:05
Вложенные IFrame и History goldserg Элементы интерфейса 1 28.03.2011 15:57
запрет redirect в iframe eval Общие вопросы Javascript 1 06.03.2011 00:26