Я разрабатываю веб-приложение, которое открывает всплывающее окно, используя 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
Создание окна не является операцией блокировки; Сценарий продолжает выполнять, когда это окно открывается и загружает 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 секунду до этого ему удается успешно называть это.
Проблема в том, что окно.опен возвращает довольно быстро, документ, который запрашивается, а затем любые другие элементы, которые впоследствии могут ссылаться на то, что этот документ может впоследствии, не будет загружен в окно Отказ
Отсюда пытается вызвать этот метод, так что рано потерпит неудачу. Вы должны приложить функцию события нагрузки на открытое окно и попытаться заставить вас звонить из этой функции.
Вы вызываете функцию сразу после открытия окна; Страница на всплывающем окне не может быть загружена, поэтому функция может быть определена в этой точке.