Нужен обратный вызов всякий раз, когда iframe перезагружается - PullRequest
1 голос
/ 20 февраля 2012

Это похоже на обратный вызов Javascript после завершения загрузки IFRAME? , но разница в том, что я взял веб-приложение, которое мы используем, и для его мониторинга я поставил еговнутри iframe, чтобы мой javascript мог заглянуть внутрь веб-страницы.

Итак, когда пользователь использует приложение, оно будет загружать новые страницы, но все они находятся внутри iframe, который не перезагружается.

Есть ли какое-либо событие, которое сообщит мне, когда страница будет загружена в этом iframe, или, по крайней мере, будет проинформировано, когда страница будет заменена?

Ответы [ 2 ]

2 голосов
/ 20 февраля 2012

Нет такого события. Единственная идея, которую я имею в виду, - это запустить таймер (window.SetInterval()), который регулярно проверяет, изменилось ли местоположение (URL) iframe по сравнению с предыдущей проверкой.

Еще одна мысль: контролируется ли содержание iframe или вы просматриваете контент из какого-то другого домена? Если это ваше, вы, конечно, можете размещать события внутри этого кода, такие как "onbeforeunload", которые будут информировать вас о перенаправлении iframe.

1 голос
/ 20 февраля 2012

Есть ли у вас контроль над теми страницами, которые загружаются внутри iframe?Если это так, то вы можете просто добавить ко всем из них js-файл, который выполняет только это:

parent.loaded(document.location.href);

Затем на главной странице, где у вас есть iframe, есть:

function loaded(url) {
    alert('"' + url + '" was loaded');
}

Чтобы это работало, вам также необходимо обслуживать все страницы в iframe из того же домена, что и главная страница.

EDIT

Поскольку вы обслуживаете страницы iframe из того же домена, что иВо-первых, вам нужно контролировать сервер, обслуживающий страницы, поэтому даже если вы не можете изменить код, вы можете изменить его во время выполнения, когда сервер вернет содержимое.Например, вы можете вернуть измененную версию js-файла, который всегда загружается с чем-то вроде parent.loaded (document.location.href); .

Это может показаться более сложным, чем использованиеsetTimeout, но это еще одно решение.

Еще одна вещь, которую вы можете сделать, поскольку у вас есть доступ к dom, - это зарегистрироваться на событие onunload , чтобы вы могли использовать setTimeoutкогда вы точно знаете, что страница будет перезагружена, это предотвратит таймер остановки без остановки.

С учетом всего вышесказанного, может быть, это не лучший способ реализовать этот мониторинг?Может быть, вы можете реализовать это с расширением браузера?Те, кому дано знать об изменениях в расположении всех документов.

Другое правка

Возможно, вы захотите попробовать использовать это событие загрузки для фреймов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...