JavaScript, вызывая детскую функцию окна от новичка не работает

Я разрабатываю веб-приложение, которое открывает всплывающее окно, используя windows.open (..). Я должен вызвать функцию на открытом окне, используя ручку, возвращенную «window.open», но я всегда добираюсь, сообщение об ошибке «addWindow.getMaskElements не является функцией», как будто это не могло получить доступ к функции, объявленной на детском окне. Это - поведение и в IE и в И следующие. Мой кодекс похож на это:

function AddEmail(target,category)
{
    if(addWindow == null)
    {
        currentCategory = category;
        var left = getDialogPos(400,220)[0];
        var top =  getDialogPos(400,220)[1];
        addWindow = window.open("adicionar_email.htm",null,"height=220px, width=400px, status=no, resizable=no");
        addWindow.moveTo(left,top);
        addWindow.getMaskElements ();
    }
}

Я имею googled и читаю из различных надежных источников, и по-видимому это, как предполагается, работает, однако он не делает. Еще одна вещь, функции в детском окне объявлены в отдельном .js файле, который включен в файл adicionar_email.htm. Это имеет значение? Это не было должно.. Так, если кто-либо имеет, столкнулся с подобной проблемой или имеет любую идею того, что я делаю неправильно, пожалуйста, ответьте на это сообщение.Заранее спасибо.

Kenia

13
задан Kenia 22 January 2010 в 14:30
поделиться

3 ответа

Создание окна не является операцией блокировки; Сценарий продолжает выполнять, когда это окно открывается и загружает HTML и JavaScript и распределить его.

Если вы должны были добавить ссылку на исходной странице, как это:

<a href="#" onclick="addWindow.getMaskElements();">Test</a>

Вы бы увидели, что это работает. (Я попробовал это, чтобы быть уверенным.)

** Редактировать **

Кто-то еще разместил обходной путь, позвонив на загрузку в целевом документе, вот еще один подход:

function AddEmail()
{

        if(addWindow == null) {
        addWindow = window.open("test2.html",null,"height=220px, width=400px, status=no, resizable=no");
        }

        if(!addWindow.myRemoteFunction) {
            setTimeout(AddEmail,1000);
        } else { addWindow.myRemoteFunction(); }
}

Это продолжает пытаться вызвать AddWindow.myremotefunction Каждые 1 секунду до этого ему удается успешно называть это.

11
ответ дан 1 December 2019 в 22:57
поделиться

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

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

5
ответ дан 1 December 2019 в 22:57
поделиться

Вы вызываете функцию сразу после открытия окна; Страница на всплывающем окне не может быть загружена, поэтому функция может быть определена в этой точке.

1
ответ дан 1 December 2019 в 22:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: