2014-09-19 2 views
1

Я использую веб-приложениеЧтобы найти верхний родительское окно от дочернего окна

Из моего основного приложения, я открыл дочернее окно C1 и снова открыл еще одно дочернее окно C2 из C1. Если я закрою окно C1, я не смогу найти главное приложение.

На самом деле я хотел перенаправить Основное приложение на другую страницу, если гиперссылке на ребенка window.This работает хорошо, пока я не закрыть C1, который является родителем C2

Любая помощь очень ценится

+0

Вы можете поделиться некоторыми кодами? – JME

+0

В моем веб-приложении открыто всплывающее окно C1 с помощью window.open. Другое всплывающее окно C2 можно открыть из C1 при нажатии гиперссылки. Каждое всплывающее окно имеет родительскую гиперссылку, которая будет перенаправлять основное родительское окно, когда пользователь щелкнет по нему. Ниже приведен javascript, чтобы найти самое верхнее родительское окно для перенаправления. Это хорошо работает. Но это вызывает ошибку, если я закрываю окно C1. потому что C2 не может найти свое родительское окно. var win = window; var topWindow = null; while (win = win.opener) { \t topWindow = win; } if (topWindow! = 'Undefined' && topWindow! = Null) { topWindow.location.href = 'url link'; } – Mey

+0

Вы могли решить это? – JME

ответ

0

@Mey, не имея возможности увидеть ваш код, будет трудно точно определить, в чем проблема. Тем не менее, window.top является ссылкой на самое верхнее окно. Кажется, это поддерживается всем основным браузером (см. here).

Вы абсолютно правы. Это не работает на окнах, созданных window.open(). Как насчет этого решения: у окна открывателя есть свойство в открывшемся окне, чтобы отслеживать самое верхнее окно сразу после открытия. Таким образом, если какое-либо промежуточное окно закрыто, открытое окно уже имеет ссылку на самое верхнее окно. Позвольте мне показать вам, что я имею в виду.

Из верхнего окна большинства:

var c1 = window.open(...); 
c1.window.topMost = window; 

С первого всплывающего окна:c1

var c2 = window.open(...); 
c2.window.topMost = window.topMost; 

Из второго всплывающего окна:c2

var c3 = window.open(...); 
c3.window.topMost = window.topMost; 

Теперь, скажем, вы закрываете c1 или c2, c3 все равно будет иметь ссылку на window.topMost.

+0

window.top найдет самый верхний браузер при использовании фреймов. Но я использую popup, window.top не найдет главное окно приложения. – Mey

Смежные вопросы