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, время: 23:30. |