Как установить свойство родительской страницы после запуска 2х последов. popup окон?
На главной странице по нажатию открывается стандартное поп-ап окно window.open(....№1...)
в выпадающем окне №1 по нажатию открывается другое окно (тоже window.open(....№2...) ) В втором окне (2) пользователь может поменять значеня в форме.Как при этом можно сослаться на главную страницу, которая запускала окно 1? Если бы окно 1 просто открылось - можно было обратиться к родительскому окну через : window.opener.document.форма.переменн ая Этот вызов тоже не работает window.parent.document.форма.переменн ая т.к. окно 2 уже открыто через окно 1, а оно через главное окно :-( Пожалуйста подскажите, как можно обратиться к главной странице ? например из окна 2 установить значение переменной. Спасибо за ответ :) |
window.opener.opener ? |
Цитата:
а если потом будет не 2 а 3 окна ? как можно обратиться к главной странице, от которой начинали запускаться окна ? как в этом случае делать ? |
top UPD: Нет, наврал, это для фреймов. Тут видимо или бежать по opener'ам, или в каждом окне сохранять ссылку на главное. |
ksl,
var topWindow = window.opener; while (topWindow.opener != null) { topWindow = topWindow.opener; } |
Спасибо! Ваш цикл поиска родительнского окна работает.
А если закрыть окно 2, то окно 3 не может в цикле выйти на родительское окно. Получается, делать проверку, если промежуточного окна нет, тогда обращаться к чему ? родительское - попап окно 1 - попап окно 2 - попап окно 3 после закрытия окна имеем: родительское - попап окно 1 - .... - попап окно 3 |
После закрытия связь окон теряется, запоминайте ссылку на родительское окно сразу, при открытии дочернего.
|
ksl, а зачем столько окон?
|
Для чего ? хочу показать карточку товара, и окно корзины где будут товаары сохраняться. а все окна вызываются с страницы магазина.
Кстаи, если удалил промежуточное окно - ругается: Ошибка: topWindow is null уже так пробовал: думал сосчитать кол-во отрытых окон. Если вызвалось окно из главного - счетчик будет = 0, а если из другого -будет > 0 var WindowCounter = 0; if(window.opener != null) { var topWindow = window.opener; while (window.opener != null) { topWindow = topWindow.opener; WindowCounter = WindowCounter +1; } } if(WindowCounter == 1) { topWindow.close(); } alert("WinCounter = "+WindowCounter) |
Хотел передать указатель на открытое окно между окнами, как советовал Андрей Параничев, за что ему большое спасибо!
но как его переслать по ссылке? собираю указатель на окно и потом делаю : var topWindow = window.opener; while (topWindow.opener != null) { topWindow = topWindow.opener; } window.open('basket.php?'+'getwindref='+topWindow,'korzina','status=yes,scrollbars=yes,width=600,height=450,resizable=yes','alwaysRaised'); получается у менят так: .... getwindref=[object Window] как потом средствами РНР или смарти взять этот object Window и изменить значение типа: topWindow.form.field.value = .... Ошибка: missing ] after element list var topWindow = [object Window] |
Часовой пояс GMT +3, время: 18:33. |