Обнаружение загрузки дочернего окна каждый раз, когда оно это делает

Я пытаюсь добавить некоторые функции проверки загрузки страницы в родительские, дочерние окна с помощью Javascript.

Моя цель - обнаружить «из родительского окна» каждый раз, когда дочернее окно полностью загружается, а затем выполнять некоторый код.

Я использую следующий пример кода в своем родительском окне:

<script type='text/javascript'>

childPage=window.open('http://www.example.com');

childOnLoad=childPage.addEventListener('load', LoadAndGo, true);

function LoadAndGo()
{
    if(confirm("Press a button")==true)
    {
        //childPage.removeEventListener ("load", childOnLoad, false);
        childPage.top.location.href="http://www.example.com";
        //childOnLoad=childPage.addEventListener('load', LoadAndGo, true);
    }
}
</script>

Предыдущий код прикрепляет и обнаруживает событие загрузки в моем дочернем окне, а затем перенаправляет его на другую страницу «после того, как я нажму кнопку подтверждения»,

Что я хочу сделать, так это заставить родительское окно обнаруживать следующие дочерние загрузки, т.е. обнаруживать загрузку после перенаправления.

Я попытался удалить, а затем повторно прикрепить новое событие onload «закомментированные строки», но, похоже, родительское окно обнаруживает только первую дочернюю загрузку.

Таким образом, поток должен выглядеть так:

Родитель открывает дочерний элемент
Родительский элемент обнаруживает дочернюю загрузку
Родительский элемент перенаправляет дочерний элемент
Родительский элемент снова обнаруживает дочернюю загрузку
. . и так далее

  • У меня есть две страницы, которые используют один и тот же домен и протокол.
  • Никакой JS не должен выполняться в дочернем окне, «т.е. дочернее окно не может проверять свои загрузки и передавать данные в родительское окно».

person Mohammed Ibrahim    schedule 24.08.2011    source источник


Ответы (1)


Повторная привязка после того, как ребенок начал навигацию, не сработала?

<script type='text/javascript'>

    var childPage = window.open('http://www.example.com');

    childPage.addEventListener('load', LoadAndGo, true);

    function LoadAndGo()
    {
        if(confirm("Press a button") == true)
        {
            childPage.top.location.href = "http://www.example.com";

            // Re-bind
            childPage.addEventListener('load', LoadAndGo, true);
        }
    }

</script>
person Wyatt    schedule 24.08.2011
comment
Нет, та же проблема, что и раньше, родитель обнаружил первую загрузку, а не ту, что после редиректа. - person Mohammed Ibrahim; 25.08.2011