Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как передать параметры из дочернего окна в родительское с задержкой? (https://javascript.ru/forum/misc/13238-kak-peredat-parametry-iz-dochernego-okna-v-roditelskoe-s-zaderzhkojj.html)

javascript_pupil 22.11.2010 12:03

Как передать параметры из дочернего окна в родительское с задержкой?
 
Есть родительское окно. В нём стоит обычный select при изменении которого в текстовое поле подставляются выбранные значения из выпадающего списка. Всё прекрасно работает.

Потребовалось дать возможность пользователю добавлять собственные значения, а не только те, что предлагают опции выпадающего списка. Добавил в javascript if/else которые при выборе клиентской опции открывает новое окно. Окно открывается, пользователь производит какие-то действия, затем возвращает в родительское окно opener, всё возвращается, только проблема в том, что javascript уже отработал и возвращённое значение уже никому не нужно. Как быть?

Вот кусок кода:

var file_name = document.submit_form.file_from_select.value;

if (file_name == "new") {
window.open("bla-bla-bla");
}
...
req.open("GET", "script.cgi?file=" + , true);


Соответственно пока открывается новое окно javascript уже доходит до вызова GET, передает туда не данные из открывшегося окна (т.к. там пользователь еще не успел ничего выбрать), а "new", соответственно script.cgi такого значения не находит и нужной работы не выполняет.

Какой-то таймаут ставить я не понимаю как, ведь пользователь с этим новым окном может работать и минуту и 10 минут.

Как быть и есть ли вообще решение?

P.S. В примерах везде приводится открытие нового окна и только после выбора в нем некоего значения возврат к родительскому. В моем же случае у javascript'а уже есть набор необходимых значений и он их обрабатывает не дожидаясь возврата.

ksa 22.11.2010 14:32

javascript_pupil, при таком открытии окон вы вообще можете остаться без родительского... :)
Как вариант делать "псевдоокно", т.е. обычный див, разукрашеный как окно и все действия производить в нём.
Либо showModalDialog!

monolithed 22.11.2010 14:53

Цитата:

Сообщение от ksa
showModalDialog!

давайте тогда уже и showHelp() возьмем для кооллекции;

на этом можно и остановиться:
Цитата:

Сообщение от ksa
Как вариант делать "псевдоокно", т.е. обычный див, разукрашеный как окно и все действия производить в нём.


ksa 22.11.2010 15:12

Цитата:

Сообщение от monolithed
давайте тогда уже и showHelp() возьмем для кооллекции;

Ну это на любителя...

monolithed 22.11.2010 15:15

Цитата:

Сообщение от ksa
Ну это на любителя...

Я же пошутил:blink: :D

javascript_pupil 22.11.2010 15:34

Я плохо понимаю о чем вы? У меня был и есть скрипт который работал и выполнял свою задачу. Я решил его усовершенствовать и добавил опцию, которая открывает новое окно, в котором можно указать новое название файла.

Новый файл загружается, но для того, чтобы он появился в выпадающем списке необходимо перезагрузить родительскую страницу. Этого я и хотел избежать передавая имя файла (с чем собственно скрипт и проводит манипуляции) обратно к родителю.

ksa 22.11.2010 16:26

Цитата:

Сообщение от monolithed
Я же пошутил

Я тоже... :dance:

monolithed 22.11.2010 16:28

Цитата:

Сообщение от javascript_pupil
Новый файл загружается, но для того, чтобы он появился в выпадающем списке необходимо перезагрузить родительскую страницу. Этого я и хотел избежать передавая имя файла (с чем собственно скрипт и проводит манипуляции) обратно к родителю.

Ajax'om подгружайте

ksa 22.11.2010 16:29

Цитата:

Сообщение от javascript_pupil
чтобы он появился в выпадающем списке необходимо перезагрузить родительскую страницу

Это не обязательно делать...
Достаточно просто обратиться к родительскому окну из дочернего и выполнить в нём нужные преобразования.

Цитата:

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

Правда при этом никто не помешает пользователю закрыть родительское окно и привет. :cray:

Может пора более радикально усовершенствовать свой "скрипт"?

javascript_pupil 22.11.2010 18:34

Цитата:

Сообщение от ksa
обратиться к родительскому окну из дочернего и выполнить в нём нужные преобразования.

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

Т.е. мне каким-то образом надо прервать выполнение скрипта, если одно из значений выпадающего списка равно, например, "new'. После этого в новом окне определится название нового файла и через opener будет возвращено родителю. Родитель же продолжит выполнение скрипта, но уже с новым, полученным из дочернего окна значением. Если же переменная не эквивалента заданному значению, то текущий скрипт выполняется как обычно. Как это сделать (вставить доп.условие и прервать выполнение скрипта до получения нового значения) я не знаю. Пытаюсь найти ответ у специалистов по этому языку. :)


Часовой пояс GMT +3, время: 12:18.