Redirect after iframe reload
Здравствуйте. Есть страничка, внутри которой находится iframe. В этом айфрейме есть кнопка. При нажатии кнопки на серверной стороне меняется контент айфреймовского сорса. Т.е. линк в iframe src остаётся тем же, что и был, но теперь по линку в src совершенно другой контент. Далее происходит reload айфрейма и контент меняется на новый.
У меня есть возможность вставлять js код в страничку, которая указана в iframe src (до reload). Есть ли возможность сделать redirect _после_ reload? Не суть redirect, можно ли выполнить любой другой код автоматически после redirect? Пускай через setInterval и проверять изменился контент или нет. Пробовал зацепиться так : 1) Код:
$("#" + iframeId).load(function () {Код:
var c = window.top.document.getElementById(iframeId);Код:
window.top.document.getElementById(iframeId).contentWindow.setTimeout(function () {alert(555)}, 1500)Код:
window.top.setTimeout(function () {alert(555)}, 1500)========= Спасибо! |
Цитата:
<iframe src="http://javascript.ru/forum/" name="myframe" height=500 width=100% onload="alert(myframe.window.document.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 или выполнить ещё какой-то код. |
Разобрался. Нужно создать свою html страницу, открывать её в beforeAction() через window.open(). А уже из открывшегося окна можно установить setInterval и отслеживать контент в айфрейме родительского окна. Таким образом скрипт запущенный из айфрейма будет работать и после его перезагрузки.
|
| Часовой пояс GMT +3, время: 11:18. |